PHP PDO


PHP 資料物件 (PDO) 擴充為PHP存取資料庫定義了一個輕量級的一致介面。

PDO 提供了一個資料存取抽象層,這意味著,不管使用哪種資料庫,都可以用相同的函數(方法)來查詢和取得資料。

PDO隨PHP5.1發行,在PHP5.0的PECL擴充中也可以使用,無法運作於先前的PHP版本。


PDO 安裝

你可以透過 PHP 的 phpinfo() 函數來查看是否安裝了PDO擴充。

在Unix 系統上安裝PDO

在Unix上或Linux上你需要加入以下擴充功能:

extension=pdo.so

Windows 使用者

PDO 和所有主要的驅動器作為共享擴展隨PHP 一起發布,要激活它們只需簡單地編輯php.ini 文件,並添加以下擴展:

extension=php_pdo.dll
除此之外還有以下對應的各種數據庫擴展:
;extension=php_pdo_firebird.dll
;extension=php_pdo_informix.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll

在設定好這些設定後,我們需要重新啟動PHP 或Web伺服器。

接下來我們來看下具體的實例,以下為使用PDO連接MySql資料庫的實例:

<?php
$dbms='mysql';     //数据库类型
$host='localhost'; //数据库主机名
$dbName='test';    //使用的数据库
$user='root';      //数据库连接用户名
$pass='';          //对应的密码
$dsn="$dbms:host=$host;dbname=$dbName";


try {
    $dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象
    echo "连接成功<br/>";
    /*你还可以进行一次搜索操作
    foreach ($dbh->query('SELECT * from FOO') as $row) {
        print_r($row); //你可以用 echo($GLOBAL); 来看到这些值
    }
    */
    $dbh = null;
} catch (PDOException $e) {
    die ("Error!: " . $e->getMessage() . "<br/>");
}
//默认这个不是长连接,如果需要数据库长连接,需要最后加一个参数:array(PDO::ATTR_PERSISTENT => true) 变成这样:
$db = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));

?>

很簡單吧,接下來就讓我們來具體看下PHP PDO具體說明:

  • 預先定義常數

  • PHP PDO連線管理

  • PHP PDO 交易與自動提交

  • PHP PDO 預處理語句與預處理語句

  • PHP PDO 錯誤與錯誤處理

  • #PHP PDO 大物件(LOBs)

  • PDO 類別:

    • PDO::beginTransaction — 啟動一個事務

    • PDO::commit — 提交一個交易

    • #PDO::__construct — 建立一個表示資料庫連線的PDO 實例

    • #PDO::errorCode — 取得跟資料庫句柄上一次操作相關的SQLSTATE

    • PDO::errorInfo — 傳回最後一次操作資料庫的錯誤訊息

    • PDO::exec — 執行一條SQL 語句,並傳回受影響的行數

    • PDO::getAttribute — 取回一個資料庫連線的屬性

    • PDO::getAvailableDrivers — 傳回可用驅動的陣列

    • PDO::inTransaction — 檢查是否在一個交易內

    • PDO::lastInsertId — 傳回最後插入行的ID或序列值

    • PDO::prepare — 備要執行的SQL語句並傳回一個PDOStatement 對象

    • PDO::query — 執行SQL 語句,傳回PDOStatement物件,可以理解為結果集

    • PDO::quote — 為SQL語句中的字串添加引號。

    • PDO::rollBack — 回滾一個交易

    • #PDO::setAttribute — 設定屬性

  • #PDOStatement 類別:

    • PDOStatement::bindColumn — 綁定一列到一個PHP 變數

    • # PDOStatement::bindParam — 綁定一個參數到指定的變數名稱

    • PDOStatement::bindValue — 把一個值綁定到一個參數

    • PDOStatement::closeCursor — 關閉遊標,使語句能再次執行。

    • PDOStatement::columnCount — 傳回結果集中的列數

    • PDOStatement::debugDumpParams — 列印一則SQL 預處理指令

    • #PDOStatement::errorCode — 取得跟上語句句柄操作相關的SQLSTATE

    • PDOStatement::errorInfo — 取得跟上語句句柄操作相關的擴展錯誤訊息

    • PDOStatement::execute — 執行一條預處理語句

    • PDOStatement::fetch — 從結果集中取得下一行

    • PDOStatement::fetchAll — 傳回一個包含結果集中所有行的陣列

    • PDOStatement::fetchColumn — 從結果集中的下一行傳回單獨的一列。

    • PDOStatement::fetchObject — 取得下一行並作為一個物件傳回。

    • PDOStatement::getAttribute — 擷取一個語句屬性

    • PDOStatement::getColumnMeta — 傳回結果集中一列的元資料

    • #PDOStatement::nextRowset — 在一個多行集語句句柄中推進到下一個行集

    • PDOStatement::rowCount — 傳回受上一個SQL 語句影響的行數

    • PDOStatement::setAttribute — 設定一個語句屬性

    • PDOStatement::setFetchMode — 為語句設定預設的取得模式。

#