PHP PDO
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));
?>
$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 — 為語句設定預設的獲取模式。