小编典典

将查询错误转换为MySQLi中的异常

php

我正在尝试将MySQLi查询错误转换为“异常”,但不能-仅在无法连接数据库时抛出mysqli_sql_exception。

我使用了mysqli_report(MYSQLI_REPORT_STRICT)程序化的MySQLi函数嵌入到自定义包装器类中。

以前的代码:

public function mysqlQuery($SQL) {

    $this->Result = mysqli_query($this->DBlink, $SQL);

    if($this->Result === false)
        throw new MySQLiQueryException($SQL, mysqli_error($this->DBlink), mysqli_errno($this->DBlink));

    return $this->Result;

}

问题: 查询失败是否正常,没有警告,也没有引发异常,所以我必须检查mysqli_query()是否返回false?


阅读 339

收藏
2020-05-26

共1个答案

小编典典

不久前,我设法解决了这个问题。正如在其他答案中指出的那样,

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

是告诉mysqli抛出异常的正确方法。

只要确保您 没有将每个查询都包装在try-catch中即可。这是一个非常普遍的误解,即一旦您开始使用异常,您就应该开始向左和向右抛出尝试和捕获。恰恰相反,应谨慎使用try-catch。虽然您不应将99%的错误处理到位,而是由整个站点的错误处理程序来处理。您可以从我有关PHP错误报告的文章中阅读有关该主题的更多信息。

2020-05-26