PHP 資料物件(PDO) 擴充為PHP存取資料庫定義了一個輕量級的一致介面。
PDO 提供了一個資料存取抽象層,這意味著,不管使用哪種資料庫,都可以用相同的函數(方法)來查詢和取得資料。
PDO隨PHP5.1發行,在PHP5.0的PECL擴充中也可以使用,無法運作於先前的PHP版本。
你可以透過PHP 的phpinfo() 函數來查看是否安裝了PDO擴充。
在Unix上或Linux上你需要加入以下擴充功能:
extension=pdo.so
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;extensio n=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 — 為語句設定預設的取得模式。