PHP5中PDO的簡單使用2

來源:互聯網
上載者:User
【錯誤處理】
如果程式中碰到錯誤咋辦?我們這裡描述PDO類的錯誤資訊和異常處理。
1. 物件導向的方式
先看看如果串連錯誤等的處理,使用物件導向的方式來處理:
 <?php
 try {
    $db = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    $db = null;
 } catch (PDOException $e) {
    print "Error: " . $e->getMessage() . "<br/>";
    die();
 }
 ?>

這裡利用我們PHP 5物件導向的異常處理特徵,如果裡面有異常的話就初始化調用PDOException來初始化一個異常類。
PDOException異常類的屬性結構:
 <?php
 class PDOException extends Exception
 {
     public $errorInfo = null;  // 錯誤資訊,可以調用 PDO::errorInfo() 或 PDOStatement::errorInfo()來訪問
     protected $message;    // 異常資訊,可以試用 Exception::getMessage() 來訪問
     protected $code;             // SQL狀態錯誤碼,可以使用 Exception::getCode() 來訪問
 }
 ?>

這個異常處理類是整合PHP 5內建的異常處理類,我們簡單的看一下PHP 5內建的異常處理類結構:
 <?php
 class Exception
 {
     // 屬性
     protected $message = 'Unknown exception';   // 異常資訊
     protected $code = 0;                        // 使用者自訂異常代碼
     protected $file;                            // 發生異常的檔案名稱
     protected $line;                            // 發生異常的程式碼號
 
      // 方法
     final function getMessage();                // 返回異常資訊
     final function getCode();                   // 返回異常代碼
     final function getFile();                   // 返回傳生異常的檔案名稱
     final function getLine();                   // 返回傳生異常的程式碼號
     final function getTrace();                  // backtrace() 數組
     final function getTraceAsString();          // 已格成化成字串的 getTrace() 資訊
 }
 ?>
 

相應的,在代碼中可以合適的調用 getFile() 和 getLine() 來進行錯誤定位,更方便的進行調試。

2. 使用面向過程的方法
先看代碼:
 <?
 $db = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
 $rs = $db->query("SELECT aa,bb,cc FROM foo");
 if ($db->errorCode() != '00000'){
     print_r($db->errorInfo());
     exit;
 }
 $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功能確實強大,另外還有一些內容我沒有講到,比如綁定參數、預先處理、預存程序、交易處理等等功能。另外還有不同資料擴 DSN的構造,Oracle資料庫自己很多特殊的東西,都需要深入去學習理解,這篇文章就只是簡單的描述了一些入門知識,算是對PDO一個簡單的瞭解吧。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.