Невозможно обновить данные, используя подготовленные операторы в объектно-ориентированной MySQL - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь этот код обновить токены в моей базе данных, но получаю эту ошибку:

Примечание: неопределенная переменная: stmt_i в C: \ MAMP \ htdocs \ admin-dashboard \ action.php в строке 185

Исправимая фатальная ошибка: объект класса mysqli не может быть преобразован в строку в C: \ MAMP \ htdocs \ admin-dashboard \ action.php в строке 185

 if(count($assoc_array)>0){
                        $token = "qwertyuiopasdfghjklzxcvbnm1234567890jksdhfljdhfajlsdbhkfdajsfhaljsdfhb";
                        $token=str_shuffle($token);
                        $token=substr($token, 0,10);

    //                  echo $token;

                        $stmt_i->$conn->prepare("UPDATE users SET token=?, tokenExpire=DATE_ADD(NOW(), INTERVAL 5 MINUTE) WHERE email=?");
                        $stmt_i->bind_param("ss",$token,$femail);
                        $stmt_i-> execute();
}

1 Ответ

0 голосов
/ 03 февраля 2019

Вам необходимо сделать следующее:

  • установить $femail переменную
  • подготовить свой оператор с помощью prepare() и присвоить результат переменной $stmt_i.Затем свяжите каждое значение параметра и выполните свое утверждение.Обратите внимание, что prepare () является методом класса mysqli, в то время как bind_param () и execute () являются методами класса mysqli_stmt.

    if (count($assoc_array) > 0) {
        $token = "qwertyuiopasdfghjklzxcvbnm1234567890jksdhfljdhfajlsdbhkfdajsfhaljsdfhb";
        $token = str_shuffle($token);
        $token = substr($token, 0,10);
        $femail = 'some@email.com';
    
        $stmt_i = $conn->prepare("UPDATE users SET token=?, tokenExpire=DATE_ADD(NOW(), INTERVAL 5 MINUTE) WHERE email=?");
        $stmt_i->bind_param("ss", $token, $femail);
        $stmt_i->execute();
    }
    
    ?>
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...