PDO錯誤處理

2021-07-16 04:29:50 字數 3406 閱讀 4798

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

作為設定錯誤代號的附件,pdo會丟擲乙個pdoexception異常並設定它的屬性來反映錯誤代號和錯誤資訊。這中設定在除錯時也是很有用的,因為他會有效的「放大(blow up)」指令碼中的出錯點,非常快速的指向乙個你**中可能出錯區域。(記住:如果異常導致指令碼中斷,事務處理回自動回滾。)

異常模式也是非常有用的,因為你可以使用比以前那種使用傳統的php風格的錯誤處理結構更清晰的結構處理錯誤,比使用安靜模式使用更少的**及巢狀,也能夠更加明確地檢查每個資料庫訪問的返回值。

關於php中異常的更多資訊請看exceptions章節

//在使用pdo進行那個php和資料庫開發過程中,如果程式中碰到錯誤咋辦?我們這裡描述pdo類的錯誤資訊和異常處理。

//物件導向的方式

//先看看如果連線錯誤等的處理,php中pdo的錯誤處理,使用物件導向的方式來處理:

<?php

try catch (pdoexception $e)

?>

//這裡利用我們php 5物件導向的異常處理特徵,如果裡面有異常的話就初始化呼叫pdoexception來初始化乙個異常類。

pdoexception異常類的屬性結構:

<?php

class

pdoexception

extends

exception

?>

這個異常處理類是整合php 5內建的異常處理類,我們簡單的看一下php 5內建的異常處理類結構:

<?php

class

exception

?>

相應的,在**中可以合適的呼叫 getfile() 和 getline() 來進行錯誤定位,更方便的進行除錯。

使用面向過程的方法

<?

$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;

?>

pdo和pdostatement物件有errorcode() 和 errorinfo() 方法,如果沒有任何錯誤, errorcode() 返回的是: 00000 ,否則就會返回一些錯誤**。errorinfo() 返回的乙個陣列,包括php定義的錯誤**和mysql的錯誤**和錯誤資訊,陣列結構如下:

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()方法的示例:

<?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()方法

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...