設定PDO的錯誤處理模式
阿新 • • 發佈:2019-01-05
PDO預設的錯誤處理方式是返回一個數組格式的錯誤程式碼。如果想要判斷SQL有沒有出錯時,就需要寫一組程式碼來檢測這個返回的陣列。覺得這樣有些麻煩。還好PDO還提供了另外兩種處理方式,只要根據需要設定一下就OK了。
PDO::ERRMODE_SILENT
這是預設使用的模式。PDO會在statement和database物件上設定簡單的錯誤代號,可以使用PDO->errorCode() 和 PDO->errorInfo() 方法檢查錯誤;
PDO::ERRMODE_WARNING
使用這個模式時,PDO將會發出一個傳統的E_WARNING資訊。
PDO::ERRMODE_EXCEPTION
PDO會丟擲一個PDOException異常並設定它的屬性來反映錯誤代號和錯誤資訊。
比較之下,我比較傾向於使用第三種,用異常處理錯誤資訊。
設定的時候要注意,這三個都是屬於PDO::ATTR_ERRMODE屬性的值,所以在用setAttribute設定的時候需要加上屬性名:PDO::ATTR_ERRMODE。
程式碼舉例:
$pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
應用場景:
在你例項化 pdo 後,執行
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
通常在例項化時加入,例
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
PDO::ERRMODE_SILENT
這是預設使用的模式。PDO會在statement和database物件上設定簡單的錯誤代號,可以使用PDO->errorCode() 和 PDO->errorInfo() 方法檢查錯誤;
PDO::ERRMODE_WARNING
使用這個模式時,PDO將會發出一個傳統的E_WARNING資訊。
PDO::ERRMODE_EXCEPTION
PDO會丟擲一個PDOException異常並設定它的屬性來反映錯誤代號和錯誤資訊。
比較之下,我比較傾向於使用第三種,用異常處理錯誤資訊。
設定的時候要注意,這三個都是屬於PDO::ATTR_ERRMODE屬性的值,所以在用setAttribute設定的時候需要加上屬性名:PDO::ATTR_ERRMODE。
程式碼舉例:
$pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
應用場景:
在你例項化 pdo 後,執行
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
通常在例項化時加入,例
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));