当前位置: 首页 > 面试题库 >

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

芮歌者
2023-03-14
问题内容

我正在尝试将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?


问题答案:

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

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

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

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



 类似资料:
  • 我正在尝试将MySQLi查询错误转换为异常,但Couldn't-mysqli_sql_exception仅在连接DB失败时才会引发。 我使用了 和嵌入到自定义包装器类中的过程性MySQLi函数。 原代码: 问:当查询失败时不抛出警告或异常,因此我必须检查mysqli_query()是否返回false,这是正常的吗?

  • 问题内容: 我想将以下SQL查询转换为Elasticsearch之一。谁能帮上忙 我尝试了以下方法: 但不确定我是否做对了,因为它无法验证结果。似乎要在聚合内添加查询。 问题答案: 假设您使用Elasticsearch 2.x,则有可能在Elasticsearch中 具有 -semantics。我不知道2.0之前的可能性。 您可以使用新的Pipeline Aggregation Bucket Se

  • 这是从下面提到的SQL查询创建的JPQl查询: “org.springframework.dao.invalidDataAccessResourceUsageException:无法提取ResultSet;SQL[n/a];嵌套异常为org.hibernate.exception.sqlgrammarexception:无法提取ResultSet” 请问上述例外情况我能做些什么?

  • 问题内容: 多亏了Erwin Brandstetter在我之前的问题“具有has_many关系的订单”中的帮助,我的SQL查询才能正常工作。 如何将该SQL转换为ActiveRecords或AREL查询以在范围中使用? 我最近来的是在朋友的帮助下… …这给了我一个错误: 更新: 我之前的问题对相关的架构和查询有完整的描述。但是基本上Articles have_many Metrics和一个Metr

  • 问题内容: 实际上,我有1个查询,但无法将其转换为CakePHP查询格式。 当我将此查询转换为CakePHP时,会出现如下错误: 问题答案: 您可以轻松地在Cake上运行直接SQL查询,例如:$ this-> Picture-> query(“ SELECT * FROM pictures LIMIT 2;”); 或尝试与此类似的东西: ..确保您已正确链接Esl_Userresults和Esl_

  • 我有两个表,它们通过一个外键来维护它们之间的父子关系。查询如下所示。我想在使用jpa的同时使用标准版。所以有人可以帮助我使用标准版吗 表“child”的“notification\u id\u child”列是外键,并引用表“parent”的主键。