首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 入門

PHP PDO 資料庫抽象層完整教學

     編輯:PHP 入門

PHP PDO 資料庫抽象層完整教學


什麼是 PDO?

PHP Data Objects (PDO) 為 PHP 存取資料庫定義了一個輕量級、一致的介面。它提供資料存取抽象層,意味著無論您使用 MySQL、PostgreSQL、SQLite 還是其他資料庫,都可以用相同的函式(方法)來查詢和獲取資料。

PDO 於 PHP 5.1 隨核心發布,PHP 5.0 可透過 PECL 安裝,不支援更早版本。


安裝與設定

Unix/Linux 系統

編譯 PHP 時添加 --with-pdo 選項,並在 php.ini 中啟用:

extension=pdo.so

Windows 系統

編輯 php.ini,啟用核心擴展與所需驅動:

extension=php_pdo.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
; ... 其他驅動

修改後請重啟 Web 伺服器或 PHP-FPM。


快速入門:連接 MySQL

<?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 類別

  • PDO::beginTransaction() — 啟動事務
  • PDO::commit() — 提交事務
  • PDO::__construct() — 建立資料庫連接實例
  • PDO::prepare() — 準備 SQL 語句並返回 PDOStatement 對象
  • PDO::query() — 執行 SQL 語句,返回結果集
  • PDO::exec() — 執行 SQL 語句,返回受影響行數
  • PDO::lastInsertId() — 返回最後插入行的 ID
  • PDO::setAttribute() / getAttribute() — 設定/取得連接屬性
  • PDO::rollBack() — 回滾事務
  • PDO::errorCode() / errorInfo() — 錯誤處理

PDOStatement 類別

  • PDOStatement::execute() — 執行預處理語句
  • PDOStatement::fetch() / fetchAll() — 獲取結果行
  • PDOStatement::bindParam() / bindValue() — 綁定參數
  • PDOStatement::rowCount() — 受影響行數
  • PDOStatement::setFetchMode() — 設定獲取模式
  • PDOStatement::getColumnMeta() — 取得欄位中繼資料

最佳實踐

  • 永遠使用預處理語句防止 SQL 注入。
  • 善用事務確保資料一致性。
  • 設定 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 以拋出異常處理錯誤。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved