Почему этот подготовленный оператор UPDATE не работает, но работает при использовании в базе данных SQL - PullRequest
0 голосов
/ 26 января 2019

У меня есть следующее утверждение:

$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 Ответ

0 голосов
/ 26 января 2019

bind_param не принимает значения, только параметры. Вам нужно использовать переменные. Что-то вроде:

$stmt->bind_param('iii', $s, $ss, $sss); 
$s = 0;
$ss= 61;
$sss = 0;

должно решить это.

...