在 Windows 環境下,PHP 連接 Microsoft Access (.mdb/.accdb) 主要有三種途徑:PDO_ODBC、ODBC 擴展、COM 組件。各有優劣,適用場景不同。
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "PDO 連接成功";
// 查詢示例
$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
print_r($row);
}
} catch (PDOException $e) {
die("連接失敗: " . $e->getMessage());
}
pdo_odbc 擴展、系統配置 ODBC 驅動(32/64 位匹配 PHP 進程位數)。Driver:{Microsoft Access Driver (*.mdb, *.accdb)} (ACE 驅動支援 .accdb) 或 {Microsoft Access Driver (*.mdb)} (舊版 JET 驅動)。Dbq:使用 realpath() 獲取絕對路徑,避免相對路徑問題。";
}
}
odbc_close($conn);
odbc_prepare/execute)。$conn = odbc_connect(
"Driver={Microsoft Access Driver (*.mdb)};Dbq=" . realpath("db.mdb"),
"", ""
);
Open($dsn);
$rs = $conn->Execute("SELECT * FROM orders");
while (!$rs->EOF) {
echo $rs->Fields("order_id")->Value . " - " . $rs->Fields("amount")->Value . "
";
$rs->MoveNext();
}
$rs->Close();
$conn->Close();
extension=pdo_odbcextension=odbcextension=com_dotnet (Windows 內建)realpath() 獲取絕對路徑,避免工作目錄差異導致找不到文件。| 場景 | 推薦方式 | 理由 |
|---|---|---|
| 新項目/現代框架 | PDO_ODBC | 標準化、安全、可移植、生態豐富 |
| 舊系統維護/無 PDO | ODBC | 輕量、相容舊代碼 |
| 需 ADO 高級功能/操作 Excel | COM | 功能最完整、但僅限 Windows、重 |
| 高併發 Web 應用 | **避免 Access** | Access 非服務器級 DB,鎖競爭嚴重,建議遷移 SQLite/MySQL/PostgreSQL |
PHP 連 Access,**首選 PDO_ODBC + ACE 驅動**,標準、安全、可維護。僅在不得已時考慮 ODBC 或 COM。**生產環境高併發場景強烈建議遷移至正規關系數據庫**,Access 設計定位為單機桌面應用,非多用戶 Web 後端之選。