无法使 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 标头独自的。任何帮助,将不胜感激!


慕码人2483693
浏览 106回答 1
1回答

拉莫斯之舞

你一定在使用mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);启用mysqli函数的自动错误报告;否则,它们只会返回一个 falsey 值,您必须在代码中检查这一点。与内置的 PHP 函数不同,@不会抑制这些错误报告。用mysqli_report(MYSQLI_REPORT_OFF);// do stuff with explicit error checking// ...mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);如果您想暂时禁用此功能。或者,如果您想在任何地方恢复到显式错误检查,请删除上面的调用。
打开App,查看更多内容
随时随地看视频慕课网APP