pdo::errmode_silent這是預設使用的模式。pdo會在statement和database物件上設定簡單的錯誤代號,你可以使用pdo->errorcode() 和 pdo->errorinfo() 方法檢查錯誤;
如果錯誤是在對statement物件進行呼叫時導致的,你就可以在那個物件上使用 pdostatement->errorcode() 或 pdostatement->errorinfo() 方法取得錯誤資訊。
而如果錯誤是在對database物件呼叫時導致的,你就應該在這個database物件上呼叫那兩個方法。
pdo::errmode_warning作為設定錯誤代號的附加,pdo將會發出乙個傳統的e_warning資訊。這種設定在除錯和除錯時是很有用的,如果你只是想看看發生了什麼問題而不想中斷程式的流程的話。
pdo::errmode_exception關於php中異常的更多資訊請看exceptions章節作為設定錯誤代號的附件,pdo會丟擲乙個pdoexception異常並設定它的屬性來反映錯誤代號和錯誤資訊。這中設定在除錯時也是很有用的,因為他會有效的「放大(blow up)」指令碼中的出錯點,非常快速的指向乙個你**中可能出錯區域。(記住:如果異常導致指令碼中斷,事務處理回自動回滾。)
異常模式也是非常有用的,因為你可以使用比以前那種使用傳統的php風格的錯誤處理結構更清晰的結構處理錯誤,比使用安靜模式使用更少的**及巢狀,也能夠更加明確地檢查每個資料庫訪問的返回值。
pdoexception異常類的屬性結構://在使用pdo進行那個php和資料庫開發過程中,如果程式中碰到錯誤咋辦?我們這裡描述pdo類的錯誤資訊和異常處理。
//物件導向的方式
//先看看如果連線錯誤等的處理,php中pdo的錯誤處理,使用物件導向的方式來處理:
<?php
try catch (pdoexception $e)
?>
//這裡利用我們php 5物件導向的異常處理特徵,如果裡面有異常的話就初始化呼叫pdoexception來初始化乙個異常類。
這個異常處理類是整合php 5內建的異常處理類,我們簡單的看一下php 5內建的異常處理類結構:<?php
class
pdoexception
extends
exception
?>
相應的,在**中可以合適的呼叫 getfile() 和 getline() 來進行錯誤定位,更方便的進行除錯。<?php
class
exception
?>
使用面向過程的方法
pdo和pdostatement物件有errorcode() 和 errorinfo() 方法,如果沒有任何錯誤, errorcode() 返回的是: 00000 ,否則就會返回一些錯誤**。errorinfo() 返回的乙個陣列,包括php定義的錯誤**和mysql的錯誤**和錯誤資訊,陣列結構如下:<?
$db = new pdo('mysql:host=localhost;dbname=test', $user, $pass);
$rs = $db->query("select aa,bb,cc from foo");
if ($db->errorcode() != '00000')
$arr = $rs->fetchall();
print_r($arr);
$db = null;
?>
array
( [0] => 42s22
[1] => 1054
[2] => unknown column 『aaa』 in 『field list』
) 每次執行查詢以後,errorcode() 的結果都是最新的,所以我們可以很容易自己控制錯誤資訊顯示。
在使用pdo進行那個php和資料庫開發過程中,如果再碰到錯誤咋辦?按照上面的方式處理吧。
pdo提供了兩個獲得程式中的錯誤資訊的方法,乙個是errorcode()方法;另乙個是errorinfo()方法。
errorcode()方法
errorcode()方法用於獲取在運算元據庫控制代碼時所發生的錯誤**,這些錯誤**被稱為sqlstate**,該方法的語法格式如下:
01 string errorcode ( void ) errorcode()方法的返回值為乙個sqlstate,sqlstate是由5個數字和字母組成的**。
下面是使用errorcode()方法的示例:
errorinfo()方法<?php
$dsn = 'mysql:dbname=shop;host=localhost';
$user_name = 'root';
$user_psw = 'root';
$pdo = new pdo($dsn, $user_name, $user_psw);
$pdo->exec("update mytable set age=28 where id=1 ");//表mytable不存在
echo
"errorcode為: ".$pdo->errorcode();
?>
errorinfo()方法用於獲得運算元據庫控制代碼時所發生的錯誤資訊,該方法的語法格式如下:
01 array errorinfo ( void ) errorinfo()方法的返回值為乙個陣列,該陣列裡面包含了相關的錯誤資訊。
使用errorinfo()方法的示例**如下:
<?php
$dsn = 'mysql:dbname=shop;host=localhost';
$user_name = 'root';
$user_psw = 'root';
$pdo = new pdo($dsn, $user_name, $user_psw);
$pdo->exec("update mytable set age=28 where id=1 ");//表mytable不存在
echo
"errorinfo為: ";
print_r($pdo->errorinfo());
?>
PDO錯誤與錯誤處理
pdo錯誤處理的三種模式 引用 1.pdo errmode silent 此為預設模式。pdo 將只簡單地設定錯誤碼,可使用 pdo errorcode 和 pdo errorinfo 方法來檢查語句和資料庫物件。如果錯誤是由於對語句物件的呼叫而產生的,那麼可以呼叫那個物件的 pdostatemen...
PDO錯誤處理模式
pdo中一共提供了三種不同的錯誤處理模式 pdo errmode silent 不報錯誤 pdo errmode warning 以警告的方式報錯 pdo errmode exception 以異常的方式報錯 pdo errmode silent 此為預設模式。pdo 將只簡單地設定錯誤碼,可使用 ...
設定PDO的錯誤處理模式
pdo預設的錯誤處理方式是返回乙個陣列格式的錯誤 如果想要判斷sql有沒有出錯時,就需要寫一組 來檢測這個返回的陣列。覺得這樣有些麻煩。還好pdo還提供了另外兩種處理方式,只要根據需要設定一下就ok了。pdo errmode silent 這是預設使用的模式。pdo會在statement和datab...