8

mysqli 中有一个函数,称为mysqli_report(),它看起来像 PDO 的setAttribute()方法的对应物及其ERRMODE_*常量。手册

MYSQLI_REPORT_STRICT Throw mysqli_sql_exception for errors instead of warnings

所以,PDO::ERRMODE_EXCEPTION考虑到,我尝试了这段代码

mysqli_report(MYSQLI_REPORT_STRICT);
$mysqli->query("foo");

但是,令我失望的是,它根本没有产生任何异常或警告。

所以,问题来了:有没有办法告诉 mysqli 在不使用的情况下抛出异常MYSQLI_REPORT_ALL

4

2 回答 2

15

出于某种原因,人们倾向于使用这篇文章作为与 mysqli 错误报告相关的问题的欺骗目标。该答案从未用于此目的。

如果您被引导到这里,这是正确的答案:如果您的 mysqli 交互失败该怎么办

于 2013-08-27T05:44:07.777 回答
12

这不是一个错误,这是一个功能。;)

PHP 默认不报告 mysqli 或 PDO 错误,因为这些信息非常敏感,将其显示给用户是学习如何注入恶意数据的好方法。

MYSQLI_REPORT_ERROR 告诉它打开错误,MYSQLI_REPORT_STRICT 告诉它将这些错误转换为异常。这将为您提供错误消息的完整报告,因此如果您在生产中执行此操作,请确保您不会将其显示给最终用户。

使用管道符号 | 允许您在大多数 PHP 方法和函数中设置多个常量。PDO、mysqli、filter_var 等都使用管道来设置多个相同类型的可选参数,或者使用“标志的按位分离”来使用花哨的术语。懒人的数组参数。

于 2015-01-15T20:42:31.047 回答