使用mysqli prepare语句没有错误

时间:2016-07-04 10:46:28

标签: php mysql mysqli

我在一个小的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

不知道为什么我会这样做。但至少我现在有点需要照顾。

3 个答案:

答案 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)

尝试删除查询字符串中的终止分号。