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

PHP PDO 連接 Access 資料庫類實作範例

     編輯:PHP 相關知識

簡介

本文提供一個可直接使用的 PHP 類別 DbHelpClass,採用 PDO 透過 ODBC 驅動程式連接 Microsoft Access (.mdb) 資料庫,並封裝了預處理語句的查詢與寫入方法,適合輕量級專案或維護舊系統時參考。

完整類別程式碼

class DbHelpClass
{
    private $conn;
    private $qxId;
    private $ret;

    public function __construct()
    {
        // Access 檔案路徑,請依實際環境調整
        $path = "../../App_Data/sd#f#45G_!.mdb";
        $constr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath($path);

        try {
            $this->conn = new PDO("odbc:$constr");
            $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $e) {
            die("PDO 連線失敗: " . $e->getMessage());
        }
    }

    /**
     * 執行查詢並回傳所有結果
     * @param string $sql SQL 語句,支援命名參數(如 :id)
     * @param array  $params 參數陣列 ['id' => 1]
     * @return array
     */
    public function Read($sql, $params = [])
    {
        $stmt = $this->conn->prepare($sql);
        foreach ($params as $key => $val) {
            $stmt->bindValue(":$key", $val);
        }
        $stmt->execute();
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }

    /**
     * 執行新增、修改、刪除
     * @param string $sql
     * @param array  $params
     * @return bool
     */
    public function Edit($sql, $params = [])
    {
        $stmt = $this->conn->prepare($sql);
        foreach ($params as $key => $val) {
            $stmt->bindValue(":$key", $val);
        }
        return $stmt->execute();
    }
}

// 使用範例
$dbh = new DbHelpClass();
// 查詢
$rows = $dbh->Read("SELECT * FROM users WHERE id = :id", ['id' => 1]);
// 寫入
$dbh->Edit("INSERT INTO logs (msg) VALUES (:msg)", ['msg' => '測試']);

關鍵點說明

  • ODBC 連線字串:需在伺服器安裝「Microsoft Access Driver (*.mdb)」,64 位元環境請確認驅動程式版本。
  • 預處理語句:所有參數皆使用 bindValue 綁定,有效防止 SQL 注入。
  • 錯誤模式:建議啟用 PDO::ATTR_ERRMODE_EXCEPTION,以便統一捕獲異常。
  • 資源管理:類別未顯式關閉連線,PHP 會在腳本結束時自動回收;長時間運行的腳本可加入 __destruct 釋放。

適用場景與限制

適合小型專案、內部工具、或需快速整合現有 Access 資料的情境。大型高併發系統建議遷移至 MySQL、PostgreSQL 或 SQL Server。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved