为什么此 UPDATE 准备语句不起作用,但在 SQL db 中使用时有效
Why does this UPDATE prepared statement doesn't work, but works when used in SQL db
我有以下声明:
$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 Fatal error: Uncaught Error: Cannot pass parameter 2 by reference
bind_param
不接受值,它只接受参数。您需要使用变量。类似于:
$stmt->bind_param('iii', $s, $ss, $sss);
$s = 0;
$ss= 61;
$sss = 0;
应该解决了。
我有以下声明:
$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 Fatal error: Uncaught Error: Cannot pass parameter 2 by reference
bind_param
不接受值,它只接受参数。您需要使用变量。类似于:
$stmt->bind_param('iii', $s, $ss, $sss);
$s = 0;
$ss= 61;
$sss = 0;
应该解决了。