PHP的PDO錯誤與錯誤處理
PHP PDO 錯誤與錯誤處理
- PDO::ERRMODE_SILENT
此為默認模式。 PDO 將只簡單地設(shè)置錯誤碼,可使用PDO::errorCode()和PDO::errorInfo()方法來檢查語句和數(shù)據(jù)庫對象。如果錯誤是由于對語句對象的調(diào)用而產(chǎn)生的,那么可以調(diào)用那個對象的PDOStatement::errorCode()或 PDOStatement::errorInfo()方法。如果錯誤是由于調(diào)用數(shù)據(jù)庫對象而產(chǎn)生的,那么可以在數(shù)據(jù)庫對象上調(diào)用上述兩個方法。
- PDO::ERRMODE_WARNING
除設(shè)置錯誤碼之外,PDO還將發(fā)出一條傳統(tǒng)的E_WARNING信息。如果只是想看看發(fā)生了什么問題且不中斷應(yīng)用程序的流程,那么此設(shè)置在調(diào)試/測試期間非常有用。
- PDO::ERRMODE_EXCEPTION
除設(shè)置錯誤碼之外,PDO還將拋出一個PDOException異常類并設(shè)置它的屬性來反射錯誤碼和錯誤信息。此設(shè)置在調(diào)試期間也非常有用,因為它會有效地放大腳本中產(chǎn)生錯誤的點,從而可以非??焖俚刂赋龃a中有問題的潛在區(qū)域(記?。喝绻惓?dǎo)致腳本終止,則事務(wù)被自動回滾)。
異常模式另一個非常有用的是,相比傳統(tǒng) PHP風格的警告,可以更清晰地構(gòu)建自己的錯誤處理,而且比起靜默模式和顯式地檢查每種數(shù)據(jù)庫調(diào)用的返回值,異常模式需要的代碼/嵌套更少。
創(chuàng)建 PDO 實例并設(shè)置錯誤模式
<?php
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
try {
$dbh = new PDO($dsn, $user, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?>
注意:不管當前是否設(shè)置了PDO::ATTR_ERRMODE ,如果連接失敗,PDO::__construct()將總是拋出一個 PDOException 異常。未捕獲異常是致命的。
創(chuàng)建 PDO 實例并在構(gòu)造函數(shù)中設(shè)置錯誤模式
<?php
$dsn = 'mysql:dbname=test;host=127.0.0.1';
$user = 'googleguy';
$password = 'googleguy';
/*
使用 try/catch 圍繞構(gòu)造函數(shù)仍然有效,即使設(shè)置了 ERRMODE 為 WARNING,
因為如果連接失敗,PDO::__construct 將總是拋出一個 PDOException 異常。
*/
try {
$dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
exit;
}
// 這里將導(dǎo)致 PDO 拋出一個 E_WARNING 級別的錯誤,而不是 一個異常 (當數(shù)據(jù)表不存在時)
$dbh->query("SELECT wrongcolumn FROM wrongtable");
?>
以上例程會輸出:
Warning: PDO::query(): SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.wrongtable' doesn't exist in
/tmp/pdo_test.php on line 18
add a note add a note
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
php錄入頁面中動態(tài)從數(shù)據(jù)庫中提取數(shù)據(jù)的實現(xiàn)
php錄入頁面中動態(tài)從數(shù)據(jù)庫中提取數(shù)據(jù)的實現(xiàn)...2006-10-10
第4章 數(shù)據(jù)處理-php字符串的處理-鄭阿奇(續(xù))
第4章 數(shù)據(jù)處理-php字符串的處理-鄭阿奇(續(xù)) ,學(xué)習php的朋友可以參考下。2011-07-07
PHP調(diào)用三種數(shù)據(jù)庫的方法(1)
PHP調(diào)用三種數(shù)據(jù)庫的方法(1)...2006-10-10

