我一直在尝试将代码转换为使用 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 标头独自的。任何帮助,将不胜感激!
1 回答
拉莫斯之舞
TA贡献1820条经验 获得超10个赞
你一定在使用
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);
如果您想暂时禁用此功能。或者,如果您想在任何地方恢复到显式错误检查,请删除上面的调用。
- 1 回答
- 0 关注
- 105 浏览
添加回答
举报
0/150
提交
取消