close

 

PDO 提供了三種不同的錯誤處理模式

1.PDO::ERRMODE_SILENT (PDO 將只簡單地設置錯誤碼)
2.PDO::ERRMODE_WARNING (PDO 還將發出一條傳統的 E_WARNING 信息)
3.PDO::ERRMODE_EXCEPTION (PDO 還將拋出一個 PDOException 異常類並設置它的屬性來反射錯誤碼和錯誤信息)


例1 創建 PDO 實例並設置錯誤模式

<?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();
}


例2 創建 PDO 實例並在構造函數中設置錯誤模式

<?php
$dsn = 'mysql:dbname=test;host=127.0.0.1';
$user = 'googleguy';
$password = 'googleguy';

/*
使用 try/catch 圍繞構造函數仍然有效,即使設置了 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;
}

// 這里將導致 PDO 拋出一個 E_WARNING 級別的錯誤,而不是 一個異常 (當數據表不存在時)
$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

arrow
arrow
    全站熱搜

    stockwfj3 發表在 痞客邦 留言(0) 人氣()