代碼執行到$conn = @new COM("ADODB.Connection")停止,僅輸出hello1,后續hello2未輸出,說明COM組件實例化失敗。
php.ini中取消註釋extension=com_dotnet(Windows專有)。LocalSystem或有權限的用戶。.mdb文件權限。@,捕獲異常:try { $conn = new COM(...); } catch (com_exception $e) { die($e->getMessage()); }。<?php
try {
$conn = new COM("ADODB.Connection"); // 移除@
$connstr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" . realpath("db.mdb");
$conn->Open($connstr);
$rs = new COM("ADODB.Recordset");
$rs->Open("SELECT * FROM users", $conn);
while (!$rs->EOF) {
echo $rs->Fields["name"]->Value . "<br/>";
$rs->MoveNext();
}
$rs->Close();
$conn->Close();
} catch (com_exception $e) {
echo "COM Error: " . $e->getMessage();
}
?>
Microsoft.ACE.OLEDB.12.0(支持.accdb/.mdb),舊版用Microsoft.Jet.OLEDB.4.0。realpath()確保絕對路徑,避免相對路徑失效。MoveNext()(大寫N),非Movenext()。