P粉4209586922023-08-25 10:43:00
No.
您应该能够按照您的要求并指示mysqli驱动在SQL错误时抛出异常,但如果尚未启用MYSQLI_REPORT_ERROR
,则需要启用它....
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)
mysqli_query()
现在应该在错误时抛出异常。您不需要检查失败的返回值(无论如何,都会抛出异常)。
public function mysqlQuery($SQL) { try { $this->Result = mysqli_query($this->DBlink, $SQL); } catch (mysqli_sql_exception $e) { throw new MySQLiQueryException($SQL, $e->getMessage(), $e->getCode()); } return $this->Result; }
(注意:我在重新抛出的异常中将$this->SQL
更改为$SQL
。)
P粉5494120382023-08-25 00:06:47
一段时间前,我成功解决了这个问题。正如在其他答案中指出的那样,
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
是告诉mysqli抛出异常的正确方法。
只需确保不要在每个查询中都包裹try-catch。这是一个非常常见的误解,一旦开始使用异常,就应该开始到处抛出try和catch。相反,try-catch应该谨慎使用。虽然99%的错误不应该在现场处理,而是由整个站点的错误处理程序处理。您可以从我在PHP错误报告文章中了解更多相关主题。