我在一个小的PHP脚本中有这些行:
$sql = "UPDATE activation SET end = NOW(), deactivated_by = ? WHERE id=?;";
$stmt = $mysqli->prepare($sql);
if(!$stmt) {die('prepare4 failed: ' . htmlspecialchars($mysqli->error));}
但是我得到的结果没有错误,也没有响应,也没有apache error.log ...
prepare4 failed:
知道发生了什么,或者如何获得更多相关信息?
修改
if (!$stmt) {
die('prepare4 failed: ' .$mysqli->errno."----" . $mysqli->error);
}
返回prepare4 failed: 0------
我们可以从htmlspecialchars中排除问题
EDIT2
好的,我找到了如何使用以下命令启用mysql报告:
$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_ALL;
现在,我得到Commands out of sync; you can't run this command now
不知道为什么我会这样做。但至少我现在有点需要照顾。
答案 0 :(得分:1)
您可以使用$mysqli->error
if (!$stmt) {
die('prepare4 failed: ' .$mysqli->errno."----" . $mysqli->error);
}
答案 1 :(得分:1)
为了解决错误信息未显示的事实,我补充道:
$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT;
创建我的mysqli对象之后。这样我就会在发生mysql错误时提出错误。
我得到的错误是"命令不同步;您现在无法运行此命令",这表示我在关闭前一个语句之前尝试创建一个新语句。
在致电$stmt->close();
之前缺少mysqli->prepare()
。
答案 2 :(得分:0)
尝试删除查询字符串中的终止分号。