SQL Запрос не проходит!

Discussion in 'PHP' started by DVMade, 13 Jan 2011.

  1. DVMade

    DVMade Banned

    Joined:
    23 Jul 2010
    Messages:
    110
    Likes Received:
    3
    Reputations:
    0
    Визуально SQL выполняется без ошибок, и даже последующие скрипты по условию стоящие за ним, исполняются, но данные в БД не изменяются! Запрос идёт UPDATE. Помогите!!!
     
  2. drim

    drim Member

    Joined:
    27 Aug 2009
    Messages:
    347
    Likes Received:
    33
    Reputations:
    4
    чем помочь?
     
  3. Фараон

    Фараон коКотэ Of Antichat

    Joined:
    7 Nov 2010
    Messages:
    153
    Likes Received:
    105
    Reputations:
    83
    Покажи запрос.
     
  4. DVMade

    DVMade Banned

    Joined:
    23 Jul 2010
    Messages:
    110
    Likes Received:
    3
    Reputations:
    0
    $query = "UPDATE users SET `password` = '{$pass}', `salt` = '{$salt}' WHERE `id` = '{$id}'";
    $sql = mysql_query($query) or die(mysql_error());
     
  5. Фараон

    Фараон коКотэ Of Antichat

    Joined:
    7 Nov 2010
    Messages:
    153
    Likes Received:
    105
    Reputations:
    83
    Скинь весь код.
    Так как не видно, что означает переменная $pass и т.п.
     
  6. dirtybiz

    dirtybiz New Member

    Joined:
    28 Oct 2010
    Messages:
    28
    Likes Received:
    3
    Reputations:
    0
    права у пользователя на UPDATE есть?
     
  7. N@b$ter

    N@b$ter Elder - Старейшина

    Joined:
    6 Oct 2009
    Messages:
    290
    Likes Received:
    70
    Reputations:
    21
    Ты писал по модели mvc?
     
  8. DVMade

    DVMade Banned

    Joined:
    23 Jul 2010
    Messages:
    110
    Likes Received:
    3
    Reputations:
    0
    $login = (isset($_POST['login'])) ? mysql_real_escape_string($_POST['login']) : '';
    $pass1 = (isset($_POST['pass1'])) ? mysql_real_escape_string($_POST['pass1']) : '';
    $pass2 = (isset($_POST['pass2'])) ? mysql_real_escape_string($_POST['pass2']) : '';

    if ($pass1 == $pass2){

    $salt = GenerateSalt();
    $pass = md5(md5($pass1) . $salt);

    $query = "SELECT id FROM users WHERE login ='{$login}' LIMIT 1";
    $result = mysql_query($query);
    $row = mysql_fetch_assoc($result);
    $id = $row['id'];

    $query = "UPDATE users SET `password` = '{$pass}', `salt` = '{$salt}' WHERE `id` = '{$id}'";
    $sql = mysql_query($query) or die(mysql_error());

    //Проверяем прошла ли запись
    if ($sql){
    echo '<caption><div class="qtitle">Восстановление</div></caption><tr><td>
    <font color="green">Пароль успешно восстановлен! <center><br />Новый пароль: <br><font size="3"><b>'.$pass1.'</b></font></center></font>
    <li><a href="login.php">Авторизоваться</a></li>
    ';
    }else{
    echo '<caption><div class="qtitle">Восстановление</div></caption><tr><td>
    <font color="red">Произошла неизвестная ошибка!</font>
    <li><a href="lostpass.php">Попробовать снова</a></li>
    ';
    }

    }else{
    echo '
    <caption><div class="qerror"><b>Ошибка</b></div></caption><tr><td>
    <font color="red">Пароли не совпадают!</font>
    <li><a href="lostpass.php">Попробовать снова</a></li>
    ';
    }
     
  9. miako

    miako Member

    Joined:
    20 Jan 2010
    Messages:
    154
    Likes Received:
    13
    Reputations:
    5
    Убери {} с переменных
     
  10. DVMade

    DVMade Banned

    Joined:
    23 Jul 2010
    Messages:
    110
    Likes Received:
    3
    Reputations:
    0
    Всё равно, запрос визуально проходит, но данные в БД не обновляются
     
  11. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    800
    Likes Received:
    145
    Reputations:
    73
    error_reporting(E_ALL);
    В начало скрипта

    Или попробуй
    PHP:
    $login = (isset($_POST['login'])) ? mysql_real_escape_string($_POST['login']) : die("No login");
    $pass1 = (isset($_POST['pass1'])) ? mysql_real_escape_string($_POST['pass1']) : die("No pass1");
    $pass2 = (isset($_POST['pass2'])) ? mysql_real_escape_string($_POST['pass2']) : die("No pass2");

    И тут:
    PHP:
    $query "SELECT id FROM users WHERE login ='{$login}' LIMIT 1";
    $result mysql_query($query) or die(mysql_error());
    Не знаю, как вы работаете. Я когда начинал изучать и не понимал, почему не работает код, всегда после каждого действия выводил переменные, проверял функции и т.д.
    А там уже становилось ясно, где косяки.

    Например:
    PHP:
    $query "SELECT id FROM users WHERE login ='{$login}' LIMIT 1";
    Я сразу после этого сделал бы:
    PHP:
    echo "DEBUG QUERY Line(123): ".$query." ; -- END"
    Line(123) - Это номер строки в коде, чтобы потом понимать откуда выводится.

    И ВСТАВЛЯЙТЕ КОД В BB-ТЭГ [PHP ] ... [/PHP ]
     
    #11 LStr1ke, 14 Jan 2011
    Last edited: 14 Jan 2011