PHP Data Objects (PDO) 為 PHP 存取資料庫定義了一個輕量級、一致的介面。它提供資料存取抽象層,意味著無論您使用 MySQL、PostgreSQL、SQLite 還是其他資料庫,都可以用相同的函式(方法)來查詢和獲取資料。
PDO 於 PHP 5.1 隨核心發布,PHP 5.0 可透過 PECL 安裝,不支援更早版本。
編譯 PHP 時添加 --with-pdo 選項,並在 php.ini 中啟用:
extension=pdo.so
編輯 php.ini,啟用核心擴展與所需驅動:
extension=php_pdo.dll ;extension=php_pdo_mysql.dll ;extension=php_pdo_pgsql.dll ;extension=php_pdo_sqlite.dll ; ... 其他驅動
修改後請重啟 Web 伺服器或 PHP-FPM。
<?php
$dbms = 'mysql';
$host = 'localhost';
$dbName = 'test';
$user = 'root';
$pass = '';
$dsn = "$dbms:host=$host;dbname=$dbName";
try {
$dbh = new PDO($dsn, $user, $pass);
echo "連接成功<br/>";
// 範例查詢
foreach ($dbh->query('SELECT * FROM FOO') as $row) {
print_r($row);
}
$dbh = null; // 關閉連接
} catch (PDOException $e) {
die("Error!: " . $e->getMessage() . "<br/>");
}
// 長連接範例
$db = new PDO($dsn, $user, $pass, [PDO::ATTR_PERSISTENT => true]);
?>
PDO::beginTransaction() — 啟動事務PDO::commit() — 提交事務PDO::__construct() — 建立資料庫連接實例PDO::prepare() — 準備 SQL 語句並返回 PDOStatement 對象PDO::query() — 執行 SQL 語句,返回結果集PDO::exec() — 執行 SQL 語句,返回受影響行數PDO::lastInsertId() — 返回最後插入行的 IDPDO::setAttribute() / getAttribute() — 設定/取得連接屬性PDO::rollBack() — 回滾事務PDO::errorCode() / errorInfo() — 錯誤處理PDOStatement::execute() — 執行預處理語句PDOStatement::fetch() / fetchAll() — 獲取結果行PDOStatement::bindParam() / bindValue() — 綁定參數PDOStatement::rowCount() — 受影響行數PDOStatement::setFetchMode() — 設定獲取模式PDOStatement::getColumnMeta() — 取得欄位中繼資料PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 以拋出異常處理錯誤。