首页 >后端开发 >php教程 >为什么即使使用'mysqli_report(MYSQLI_REPORT_STRICT)”,MySQLi 查询也不抛出异常?

为什么即使使用'mysqli_report(MYSQLI_REPORT_STRICT)”,MySQLi 查询也不抛出异常?

Patricia Arquette
Patricia Arquette原创
2024-12-31 07:24:11265浏览

Why Don't MySQLi Queries Throw Exceptions Even with `mysqli_report(MYSQLI_REPORT_STRICT)`?

MySQLi 查询错误的异常

问题

尽管设置了 mysqli_report(MYSQLI_REPORT_STRICT),MySQLi 中的查询错误不会抛出异常。 mysqli_sql_exception 仅在连接错误时抛出。手动检查 mysqli_query() 的返回值来检测查询失败是否正常?

回答

是的,手动检查通常是必要的,因为:

  1. mysqli_report():调用 mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);确实启用异常抛出。
  2. Try-catch:与流行的看法相反,不应过度使用异常。大多数错误应由站点范围的错误处理程序集中处理。

以前的代码:

$result = mysqli_query($DBlink, $SQL);
if($result === false) {
    throw new MySQLiQueryException($SQL, mysqli_error($DBlink), mysqli_errno($DBlink));
}

相反,仅谨慎使用 try-catch需要立即注意的错误。

以上是为什么即使使用'mysqli_report(MYSQLI_REPORT_STRICT)”,MySQLi 查询也不抛出异常?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn