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

标签 php mysqli

我试图将 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,这是正常的吗?

最佳答案

前段时间我设法解决了这个问题。正如 other answer 中指出的那样,

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

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

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

关于php - 将查询错误转为 MySQLi 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56505983/

相关文章:

php - Symfony FOSUserBundle - 在布局模板中包含登录表单

javascript - anchor 标签在 safari iphone 中不起作用

php - 将包含数字范围的 GET 变量转换为 PHP 中的字符串

php - 无法使用准备好的对象语句从 mysql 获取多行数据

php - 我应该如何处理用户名已被使用的情况?

php - 如何获取最近的搜索?

php - 将 curl 命令转换为 php curl

php - PDO 结果为空

php - 调整选择方法以接受多个参数

javascript - 在数据库中插入值后显示成功消息