Невозможно обновить данные, используя подготовленные операторы в объектно-ориентированном MySQLi

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

Примечание. Неопределенная переменная: 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();
}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
90
1

Ответы 1

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

  • установить переменную $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();
    }
    
    ?>
    

Я уже указал значение для электронной почты выше этого условия if: - $femail=$_POST['femail']; // эхо $femail; и это рабочие данные, получаемые из формы.

moon_coder 03.02.2019 16:17

@ChandraPrakash Хорошо. Затем назначьте результат от $conn->prepare() до $stmt_i.

Zhorov 03.02.2019 16:21

Большое спасибо, ошибка устранена, но значение токена все еще не поступает в базу данных.

moon_coder 03.02.2019 17:03

@ChandraPrakash У вас есть запись с этим адресом электронной почты? Что echo $stmt_i->affected_rows; возвращает после $stmt_i->execute();?

Zhorov 03.02.2019 17:06

Да, у меня запись электронной почты 0 (ноль) — это ответ в $stmt_i->affected_rows.

moon_coder 03.02.2019 17:09

@ChandraPrakash Если $stmt_i->affected_rows возвращает 0, записи не обновляются. Еще раз проверьте значение $femail.

Zhorov 03.02.2019 17:13

Спасибо, наконец, я решил это. Должен ли я сохранить этот вопрос или удалить его?

moon_coder 03.02.2019 17:54

@ChandraPrakash Вы можете опубликовать свой ответ здесь или принять один из других ответов. Читайте здесь: stackoverflow.com/help/что-делать-вместо-удаления-вопросов об удалении вопросов. Спасибо.

Zhorov 03.02.2019 18:09

Другие вопросы по теме