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錯誤報告文章中了解更多相關主題。