首頁 > 後端開發 > php教程 > 為什麼我的 PDO 錯誤訊息沒有顯示?

為什麼我的 PDO 錯誤訊息沒有顯示?

Susan Sarandon
發布: 2024-12-24 20:45:10
原創
919 人瀏覽過

Why Aren't My PDO Error Messages Showing Up?

如何從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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板