不能沉默一个Mysqli调用



我一直在尝试将代码转换为使用MySQLI准备的语句(从mysqli转换为准备好语句(。我有以下代码,我无法从呼叫中沉默错误消息。取而代之的是,它吐出" PHP致命错误:...",它阻止了脚本,因此错误代码不是执行的,而是因为错误正在吐出,只有标题向用户显示。

还要注意,我也试图转换为使用"您的常识"中所述的本机PHP错误处理,但恢复了传统的" if(!...({..。}"由于该人未提及的问题(通过进行转换(引起的代码样式。所有这些修改都被我看到的。

现在为代码(并注意,DB表有故意错误的责任来检查代码的错误(...

$SQL = "SELECT * FROM Issues2 WHERE id=? AND disabled='0' LIMIT 1";
if (! $PRE = @mysqli_prepare($linkDB, $SQL)) {
    echo "<f><msg>ERROR: Could not prepare query: ".$SQL.", ".mysqli_error($linkDB)."</msg></f>";
} else {
    ...
}

我尝试使用和不带有预选的'@'符号来调用mysqli_prepare((调用,但没有运气...我应该收到"错误:无法准备..."消息,但是我只是得到XML标头单独。任何帮助将不胜感激!

您必须使用

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

启用来自mysqli函数的自动错误报告;否则,他们只会返回一个假值,您必须在代码中检查一下。与内置的PHP功能不同,@不会抑制这些错误报告。

使用

mysqli_report(MYSQLI_REPORT_OFF);
// do stuff with explicit error checking
// ...
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

如果您想暂时禁用此问题。如果要恢复到任何地方,请删除上述通话。

最新更新