无法使 mysqli 调用静音
Can not silence a mysqli call
我一直在尝试将代码转换为使用 mysqli 准备好的语句 ()。我有以下代码,我无法消除来自呼叫的错误消息。相反,它会吐出 "PHP Fatal error: ..." 暂停脚本,因此错误代码不会执行,但因为错误正在吐出,所以只向用户显示 header。
另请注意,我也试图转换为使用本机 php 错误处理,如 'Your Common Sense' 在引用的 post 中所述,但又恢复为传统的 "if (! ...) {...}" 由于该人未提及的问题(通过进行该转换)而导致的代码风格。我看到的所有这些修改都被撤销了。
现在是代码(请注意,数据库 table 有意命名错误以引发代码检查错误)...
$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() 调用时带有或不带前缀的“@”符号,但没有成功...我应该收到 "ERROR: Could not prepare ..." 消息,但我只是单独获取 XML header。如有任何帮助,我们将不胜感激!
您必须使用
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
启用 mysqli
函数的自动错误报告;否则,它们只是 return 一个错误的值,您必须在代码中检查这一点。与内置 PHP 函数不同,@
不会抑制这些错误报告。
使用
mysqli_report(MYSQLI_REPORT_OFF);
// do stuff with explicit error checking
// ...
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
如果您想暂时禁用它。如果你想在所有地方恢复到显式错误检查,或者删除上面的调用。
我一直在尝试将代码转换为使用 mysqli 准备好的语句 (
另请注意,我也试图转换为使用本机 php 错误处理,如 'Your Common Sense' 在引用的 post 中所述,但又恢复为传统的 "if (! ...) {...}" 由于该人未提及的问题(通过进行该转换)而导致的代码风格。我看到的所有这些修改都被撤销了。
现在是代码(请注意,数据库 table 有意命名错误以引发代码检查错误)...
$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() 调用时带有或不带前缀的“@”符号,但没有成功...我应该收到 "ERROR: Could not prepare ..." 消息,但我只是单独获取 XML header。如有任何帮助,我们将不胜感激!
您必须使用
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
启用 mysqli
函数的自动错误报告;否则,它们只是 return 一个错误的值,您必须在代码中检查这一点。与内置 PHP 函数不同,@
不会抑制这些错误报告。
使用
mysqli_report(MYSQLI_REPORT_OFF);
// do stuff with explicit error checking
// ...
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
如果您想暂时禁用它。如果你想在所有地方恢复到显式错误检查,或者删除上面的调用。