php
  • mysql
  • database
  • mysqli
  • prepared-statement
  • 2015-01-11 2 views 2 likes 
    2

    Итак, у меня есть этот оператор обновления, который, когда я дам переменные $ _POST., Я получаю выходные данные, которые я хочу.MySQLi обновленный подготовленный оператор, не обновляющий базу данных

    $stmt = $dbConnectionW->prepare("UPDATE members SET 
              fname='". mysqli_real_escape_string($dbConnectionW, $_POST['fname']) ."', 
              sname='". mysqli_real_escape_string($dbConnectionW, $_POST['sname']) ."', 
              gender='". mysqli_real_escape_string($dbConnectionW, $_POST['gender']) ."', 
              nationality='". mysqli_real_escape_string($dbConnectionW, $_POST['nation']) ."', 
              year='". mysqli_real_escape_string($dbConnectionW, $_POST['year']) ."', 
              dep1='". mysqli_real_escape_string($dbConnectionW, $_POST['dep1']) ."', 
              dep2='". mysqli_real_escape_string($dbConnectionW, $_POST['dep2']) ."', 
              f_pos='". mysqli_real_escape_string($dbConnectionW, $_POST['f_pos']) ."', 
              f_region='". mysqli_real_escape_string($dbConnectionW, $_POST['f_region']) ."', 
              exp_comp='".$comp."', 
              exp_dep='".$comp_dep."', 
              shareinfo='".$shareinfo."', 
              interest='".$interest."', 
              userconfirm = '1' 
               WHERE confirmcode = '".$passkey."';"); 
           $stmt->execute(); 
           if (!$stmt) 
           { 
           die('Error: ' . mysqli_error($dbConnectionW)); 
           } 
           $smst-> close(); }}} mysqli_close($dbConnectionW); 
         } 
    

    В основном проблема заключается в том, что он не обновит базу данных! Он работает без ошибок, но база данных не обновляется после этой попытки sql/php.

    Может ли кто-нибудь увидеть что-то не так с моим кодом? Каковы возможные причины того, почему моя база данных не будет обновлена? Я начинаю с этого в течение последнего часа.

    +0

    Вы уверены, что значение '$ passKey' верное? Вы уверены, что совершаете транзакцию? – Mureinik

    +0

    Вам не нужно избегать переменных в подготовленном операторе, вместо этого вы должны привязать переменные до выполнения инструкции. – worldofjr

    +0

    $ passkey определенно правильно, просто проверил его и попытался найти пользователя с электронной почтой. Также я привязал свои переменные выше этого кода, но не показал его здесь. – QuackMan245

    ответ

    2

    Вам не нужно избегать переменных в подготовленном операторе, вместо этого вы должны привязать переменные до выполнения инструкции. Также имена столбцов должны быть внутри `меток.

    $stmt = $dbConnectionW->prepare("UPDATE members SET 
             `fname`=?, 
             `sname`=?, 
             `gender`=?, 
             `nationality`=?, 
             `year`=?, 
             `dep1`=?, 
             `dep2`=?, 
             `f_pos`=?, 
             `f_region`=?, 
             `exp_comp`=?, 
             `exp_dep`=?, 
             `shareinfo`=?, 
             `interest`=?, 
             `userconfirm`=? 
              WHERE `confirmcode`=?"); 
    $stmt->bind_param('ssssissssssssis',$_POST['fname'],$_POST['sname'],$_POST['gender'],...);   
    $stmt->execute(); 
    

    Я не включил все связанные параметры для краткости.

    Надеюсь, это поможет.

    +0

    Это сработало, ты мой свет и мой спаситель. спасибо – QuackMan245

    Смежные вопросы