W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
PDO 提供了三種不同的錯誤處理模式,以滿足不同風(fēng)格的應(yīng)用開發(fā):
PDO 使用 SQL-92 SQLSTATE 來規(guī)范錯誤碼字符串;不同 PDO 驅(qū)動程序負責(zé)將它們的本地代碼映射為適當?shù)?SQLSTATE 代碼。PDO::errorCode() 方法返回一個單獨的 SQLSTATE 碼。如果需要更多此錯誤的細節(jié)信息,PDO 還提供了一個 PDO::errorInfo() 方法來返回一個包含 SQLSTATE 碼、特定驅(qū)動錯誤碼以及此驅(qū)動的錯誤字符串的數(shù)組。
示例 #1 創(chuàng)建 PDO 實例并設(shè)置錯誤模式
<?php
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
$dbh = new PDO($dsn, $user, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// This will cause PDO to throw a PDOException (when the table doesn't exist)
$dbh->query("SELECT wrongcolumn FROM wrongtable");
以上示例會輸出:
Fatal error: Uncaught PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'testdb.wrongtable' doesn't exist in /tmp/pdo_test.php:10 Stack trace: #0 /tmp/pdo_test.php(10): PDO->query('SELECT wrongcol...') #1 {main} thrown in /tmp/pdo_test.php on line 10
注意:不管當前是否設(shè)置了 PDO::ATTR_ERRMODE ,如果連接失敗,PDO::__construct() 將總是拋出一個 PDOException 異常。
示例 #2 創(chuàng)建 PDO 實例并在構(gòu)造函數(shù)中設(shè)置錯誤模式
<?php
$dsn = 'mysql:dbname=test;host=127.0.0.1';
$user = 'googleguy';
$password = 'googleguy';
$dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
// 這里將導(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 9
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: