<?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 . " ";
$rs->MoveNext();
}
$rs->Close();
$conn->Close();
?>
| 參數 | 值 | 說明 |
|---|---|---|
| CursorType | 1 (adOpenKeyset) | 可前後移動、可見他人異動 |
| LockType | 3 (adLockOptimistic) | 樂觀鎖定,更新時才鎖定 |
| DBQ | realpath(...) | MDB 檔案絕對路徑 |
<?php
$dsn = "odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=" . realpath("DATUM/cnbt.mdb");
try {
$pdo = new PDO($dsn, null, null, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);
$stmt = $pdo->query("SELECT title FROM dbo_dirs");
while ($row = $stmt->fetch()) {
echo $row['title'] . " ";
}
} catch (PDOException $e) {
die("連線失敗: " . $e->getMessage());
}
?>
unixODBC + mdbtools)Microsoft Access Database Engine 2010/2016 Redistributable。php.ini 啟用 extension=com_dotnet,且 Apache 需以具權限帳號執行。新專案請直接採用 PDO_ODBC 或遷移至伺服器型資料庫;維護舊系統時,COM 方式仍為可行方案。