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

PHP 透過 COM 元件操作 Access 資料庫完整教學

     編輯:PHP 相關知識

適用場景

在 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檢查是否到達記錄集末尾

環境需求與設定

  1. Windows Server:需安裝 Microsoft Access Database Engine (ACE OLEDB Provider)
  2. php.ini:啟用 extension=php_com_dotnet.dll
  3. 權限:IIS/Apache 執行身分需有資料夾讀寫權限(含 .ldb 鎖定檔)
  4. 32/64 位元相容:PHP、Access Engine、ODBC 驅動程式位元數必須一致

安全性警示與改進

  • SQL 注入風險:範例直接串接 $_GET['id'],實務必使用參數化查詢(ADODB.Command + Parameters)
  • 錯誤處理:建議包裝 try-catch 捕捉 COM 例外
  • 連線釋放:執行完畢呼叫 $rs->Close()、$conn->Close()、$rs=null; $conn=null;
  • 替代方案:新專案建議遷移至 SQLite (PDO) 或 MySQL,Access 適合單機少量資料
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved