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

PHP 連接 Access 資料庫完整指南(ADO 方式)

     編輯:PHP 相關知識

為何選擇 PHP + Access?

在某些舊專案遷移或輕量級應用中,因歷史原因資料庫採用 Access (`.mdb`),而 Delphi 連接 MySQL 設定較繁瑣,採用 PHP 搭配 ADO 驅動連接 Access 成為快速落地的務實選擇。本文提供可直接部署的完整範例。

環境需求

  • Windows 環境(ADO 驅動僅支援 Windows)
  • 已安裝 Microsoft Access Database Engine(或完整版 Office)
  • PHP `com_dotnet` 擴充啟用(`php.ini` 中 `extension=php_com_dotnet.dll`)

完整連線與查詢範例

<?php
/* 建立 ADO 連線 */
$conn = @new COM("ADODB.Connection") or die("ADO Connection failed.");
$connStr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("DATUM/cnbt.mdb");
$conn->Open($connStr);

/* 建立記錄集並查詢 */
$rs = @new COM("ADODB.RecordSet");
$rs->Open("SELECT * FROM dbo_dirs", $conn, 1, 3); // 1=adOpenKeyset, 3=adLockOptimistic

/* 迴圈讀取資料 */
while (!$rs->EOF) {
    echo $rs->Fields["title"]->Value;
    echo "<br/>";
    $rs->MoveNext();
}

$rs->Close();
$conn->Close();
?>

關鍵參數說明

參數說明
DRIVER指定 Access ODBC 驅動名稱,`*.mdb` 適用於 Access 2003 及之前格式
DBQ資料庫檔案完整路徑,建議使用 `realpath()` 解析相對路徑
Open() 第 3、4 參數游標類型與鎖定類型,常用組合:`1,3`(可雙向捲動、樂觀鎖定)

常見坑點與解決方案

  • 「Class not registered」錯誤:未安裝 Access Database Engine,或 PHP 版本(x86/x64)與驅動版本不匹配。
  • 中文亂碼:資料庫儲存編碼通常為 Big5/GB2312,讀取後需 `iconv('GB2312', 'UTF-8', $val)` 轉碼。
  • 效能瓶頸:Access 非高併發設計,建議僅用於低流量內部工具,生產環境請遷移至 MySQL/PostgreSQL。

進階:使用 PDO_ODBC 抽象層

若專案未來可能遷移資料庫,建議改用 PDO:

$dsn = "odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=" . realpath("DATUM/cnbt.mdb");
$pdo = new PDO($dsn);
$stmt = $pdo->query("SELECT * FROM dbo_dirs");
while ($row = $stmt->fetch()) {
    echo $row['title'] . "<br/>";
}

PDO 寫法與資料庫解耦,日後切換 MySQL 僅需修改 DSN 字串。

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