如何從PDO 取得錯誤訊息
使用PDO 時,可能會遇到儘管設定了錯誤訊息但不顯示錯誤訊息的情況錯誤模式為PDO::ERRMODE_WARNING 或PDO::ERRMODE_EXCEPTION。本文將深入探討此行為背後的原因,並提供解決問題的解決方案。
了解錯誤模式設定
PDO 提供了三種錯誤模式選項: ::ERRMODE_SILENT、PDO::ERRMODE_WARNING 和 PDO::ERRMODE_EXCEPTION。預設情況下,PDO 在 PDO::ERRMODE_SILENT 模式下運行,該模式會抑制所有錯誤訊息。將模式設為 PDO::ERRMODE_WARNING 會導致 PDO 將錯誤訊息顯示為 PHP 警告,而 PDO::ERRMODE_EXCEPTION 會引發錯誤異常。
範例場景
在您的範例程式碼,您正在嘗試準備無效的SQL 語句(@$%T$!!!) 並且無法擷取任何錯誤訊息。出現這種情況是因為預設使用的模擬預準備語句在prepare() 階段不執行語法檢查。因此,只有在execute()階段才會偵測到錯誤。
解決方案
要解決此問題,您應該確保您的MySQL驅動程式支援本機準備好的語句。本機準備好的語句在prepare()階段執行語法檢查,使您能夠及時捕捉錯誤。若要啟動本機準備好的語句,請將以下行加入您的程式碼:
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
此外,您可以使用 setAttribute() 方法將錯誤模式設為 PDO::ERRMODE_EXCEPTION。這將導致 PDO 拋出錯誤異常,從而更容易在程式碼中處理它們。
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
透過使用本機準備好的語句並將錯誤模式設為PDO::ERRMODE_EXCEPTION,您可以確保PDO將提供詳細的錯誤訊息,使您能夠有效地診斷和解決任何與資料庫相關的問題。
以上是為什麼我的 PDO 錯誤訊息沒有顯示?的詳細內容。更多資訊請關注PHP中文網其他相關文章!