PHP 認識PDO數據庫抽象層

PDO全稱是PHP Data Object(PHP數據對象),是PHP鏈接數據庫中的一個擴展,目前獲得廣泛使用。PDO主要解決的問題是爲不一樣的數據庫提供一個統一的數據訪問接口和操做層。爲實現系統在跨數據庫平臺的開發及遷移等問題上提供了較好的解決方案。PDO 對象的獲取
在PDO中,要創建與數據庫的鏈接須要實例化PDO的構造函數。PDO構造函數語法以下:
PDO::__construct ( string $dsn [, string $username [, string $password [, array $driver_options ]]] )
經過PDO構造函數來鏈接數據庫:php

 1 <?php
 2 $dbms = 'mysql';
 3 $dbName = 'dormitory';
 4 $host = 'localhost';
 5 $user = 'root';
 6 $pwd = '';
 7 $dsn = "$dbms:host=$host;dbname=$dbName";
 8 try {
 9     $pdo = new PDO($dsn, $user, $pwd);
10     echo '鏈接成功!';
11 } catch (Exception $e) {
12     echo $e->getMessage() . "<br>";
13 }
14 ?>

3種方法執行sql語句
執行sql語句的方法有:exec(),query(),prepare()+execute()。
一、exec()方法用於執行input,delete,update語句,返回值爲受影響的行數;
二、query()方法用於執行select語句,返回值爲一個二位數組;
三、預處理語句prepare()+execute(),能夠用於執行input,delete,update,select語句,
能夠把預處理語句當作想要運行的SQL的一種編譯過的模板,他可使用變量參數進行定製,作到查詢時只需解析一次就能夠執行屢次;
若是應用程序只使用預處理語句,能夠確保不會發生SQL注入
PDO::prepare()返回值爲一個PDOStatement對象,對象的內容爲prepare()方法裏面的參數;
PDO::execute(),檢查sql是否可執行,返回值爲一個boolean類型。
從預處理語句的返回值也能夠看出,他並無真正的執行sql語句,而是檢查sql的正確性,準備好執行的狀態,等到須要用到結果集的時候再執行。mysql

 1 <?php
 2             include_once './pdo_db_conn.php';
 3             try {
 4                 $query = "select * from building";
 5 //                $result = $pdo->query($query);//結果爲一個二維數組
 6                 $result = $pdo->prepare($query);
 7                 var_dump($result);
 8                 $flag = $result->execute();
 9                 var_dump($flag);
10             } catch (Exception $e) {
11                 echo $e->getMessage();
12             }
13             ?>

返回值:sql

object(PDOStatement)[2]
  public 'queryString' => string 'select * from building' (length=22)

boolean true數據庫

3種方法獲取結果集
獲取結果集的方法有fetch(),fetchAll(),fetchColumn();
fetch()方法獲取結果集中的下一行,是一個數組;
fetchAll()方法獲取結果集中的全部行,是一個數組;
fetchColumn()方法獲取結果集中下一行指定的列的值。
三個方法的調用對象類型爲PDOStatement對象類型,通常是在預處理語句以後執行

3種方法捕獲sql語句中的錯誤的方式
當執行sql語句出現錯誤是,能夠根據設置的錯誤提示方式,來決定顯示錯誤的方法。
錯誤提示方式有:
一、PDO::ERRMODE_SILENT
默認方式,出現錯誤時程序繼續執行,無錯誤提示。
二、PDO::ERRMODE_WARNING
出現錯誤時會繼續執行,錯誤的部分會提示警告信息。
三、PDO::ERRMODE_EXCEPTION
出現錯誤時不會繼續執行,錯誤的部分會提示異常信息。

2種方法獲取程序錯誤信息
當執行sql語句出現錯誤是(訪問數據庫部分,對結果集的遍歷錯誤不會提示),能夠經過errorCode(),errorInfo()兩個方法在後臺輸出錯誤信息,當sql語句是經過預編譯執行的,這兩個方法不適用。當在程序中調用errorCode()方法後,返回值爲00000(5個0)時,表示程序沒有錯誤,但返回其餘5個字符時,表示程序是有錯誤的,這時能夠經過調用errorInfo()方法來查看具體錯誤的信息。數組

相關文章
相關標籤/搜索