Почему этот подготовленный оператор UPDATE не работает, но работает при использовании в базе данных SQL
У меня есть следующее утверждение:
$stmt = $con->prepare("UPDATE accounts SET loggedin = ? WHERE TIMESTAMPDIFF(SECOND,lastcheck, NOW()) >= ? AND loggedin = ?");
$stmt->bind_param('iii', 0, 61, 0);
И это дает 500 internal server error
, Когда я попробовал то же самое на phpmyadmin, запустив SQL-файл, вот так:
UPDATE accounts SET loggedin = 0 WHERE TIMESTAMPDIFF(SECOND,lastcheck, NOW()) >= 61 AND loggedin = 1
Работал без проблем.
Где моя проблема?
Вот моя ошибка:
Неустранимая ошибка PHP: необработанная ошибка: невозможно передать параметр 2 по ссылке
1 ответ
Решение
bind_param
не принимает значения, только параметры. Вам нужно использовать переменные. Что-то вроде:
$stmt->bind_param('iii', $s, $ss, $sss);
$s = 0;
$ss= 61;
$sss = 0;
должен решить это.