在 Windows 環境下,PHP 可透過 COM 元件呼叫 ADODB 連線 Microsoft Access (.mdb/.accdb) 資料庫,適用於輕量級桌面資料遷移、舊系統整合或無法安裝 MySQL 的受限環境。
$conn = new COM("ADODB.Connection");
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("www.bkjia.com/db.mdb");
$conn->Open($connstr);
$rs = new COM("ADODB.Recordset");
// 查詢並顯示
$rs->Open("select * from szd_t", $conn, 1, 1); // adOpenKeyset, adLockOptimistic
while(!$rs->EOF) {
$f = $rs->Fields(1); // 第 2 欄位(索引從 0 開始)
echo $f->value;
$rs->MoveNext();
}
// 新增資料
$sql = "insert into szd_t(title) values('www.bkjia.com')";
$rs->Open($sql);
echo '儲存成功';
// 更新資料
$sql = 'Update szd_t set title="php100.com" where id=' . $_GET['id'];
$rs->Open($sql);
echo '編輯成功';
// 刪除資料
$sql = "delete from szd_t where id=" . $_GET['id'];
$rs->Open($sql);
| 方法/屬性 | 說明 |
|---|---|
Open(sql, conn, cursorType, lockType) | 開啟記錄集。cursorType: 1=adOpenKeyset(可雙向捲動);lockType: 1=adLockOptimistic(樂觀鎖定) |
Fields(index) | 取得欄位物件,索引從 0 開始 |
MoveNext() / MovePrevious() | 移動記錄指標 |
EOF | 檢查是否到達記錄集末尾 |
extension=php_com_dotnet.dll$_GET['id'],實務必使用參數化查詢(ADODB.Command + Parameters)try-catch 捕捉 COM 例外$rs->Close()、$conn->Close()、$rs=null; $conn=null;