Я пытаюсь использовать этот код для обновления токенов в моей базе данных, но получаю эту ошибку:
Примечание. Неопределенная переменная: 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();
}






Вам необходимо сделать следующее:
$femailподготовьте свое заявление с помощью prepare() и назначьте результат переменной $stmt_i. Затем привяжите каждое значение параметра и выполните оператор. Обратите внимание, что подготовить() — это метод класса mysqli, а bind_param() и выполнять() — методы класса mysqli_stmt.
if (count($assoc_array) > 0) {
$token = "qwertyuiopasdfghjklzxcvbnm1234567890jksdhfljdhfajlsdbhkfdajsfhaljsdfhb";
$token = str_shuffle($token);
$token = substr($token, 0,10);
$femail = '[email protected]';
$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();
}
?>
@ChandraPrakash Хорошо. Затем назначьте результат от $conn->prepare() до $stmt_i.
Большое спасибо, ошибка устранена, но значение токена все еще не поступает в базу данных.
@ChandraPrakash У вас есть запись с этим адресом электронной почты? Что echo $stmt_i->affected_rows; возвращает после $stmt_i->execute();?
Да, у меня запись электронной почты 0 (ноль) — это ответ в $stmt_i->affected_rows.
@ChandraPrakash Если $stmt_i->affected_rows возвращает 0, записи не обновляются. Еще раз проверьте значение $femail.
Спасибо, наконец, я решил это. Должен ли я сохранить этот вопрос или удалить его?
@ChandraPrakash Вы можете опубликовать свой ответ здесь или принять один из других ответов. Читайте здесь: stackoverflow.com/help/что-делать-вместо-удаления-вопросов об удалении вопросов. Спасибо.
Я уже указал значение для электронной почты выше этого условия if: - $femail=$_POST['femail']; // эхо $femail; и это рабочие данные, получаемые из формы.