在某些舊專案遷移或輕量級應用中,因歷史原因資料庫採用 Access (`.mdb`),而 Delphi 連接 MySQL 設定較繁瑣,採用 PHP 搭配 ADO 驅動連接 Access 成為快速落地的務實選擇。本文提供可直接部署的完整範例。
<?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`(可雙向捲動、樂觀鎖定) |
若專案未來可能遷移資料庫,建議改用 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 字串。