2013-02-05 89 views
0

我不得不通過建立PHP的Access數據庫的連接,但每次我嘗試我得到這個錯誤:無法通過PHP連接到Access數據庫

Fatal error: Uncaught exception 'com_exception'

隨着消息:

'Source: Microsoft OLE DB
Service Components
Description: Das Format der Initialisierungszeichenfolge entspricht nicht den OLE DB-Angaben.' in E:\path\to\phpfile.php:93
Stack trace: #0 E:\path\to\phpfile.php(93): com->Open('DRIVER={Microso...') #1 {main} thrown in

德國文本是指像「初始化字符串的格式是不常見的OLE DB語句。

我的連接代碼看起來像

$db = 'DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\") & ("\\db\\db.mdb") & ";"'; 
$conn = new COM("ADODB.Connection"); 
$conn->Open($db); 

我找不出什麼問題。在純ASP中,它工作正常,但不在PHP中。

感謝事先而不是使用「ADODB.Connection」模塊使用PDO,因爲它是目前最好的選擇那裏,是一個最佳實踐,這裏的

+1

也許考慮用這個而不是COM? http://php.net/manual/en/function.odbc-connect.php - 在該頁面上還有一些很好的一般評論。連接到Access。 – ficuscr

回答

2

是文檔:http://php.net/manual/en/book.pdo.php

但是,如果PDO是不適合你然後看到是一個本地PHP模塊的ODBC(PDO RECOMMENDED)。下面是文檔:http://php.net/manual/en/book.uodbc.php
首先你會做這樣的連接:$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdbFilename", $user, $password);

+0

感謝您的回覆,但它不起作用。但代碼看起來像'$ dbpath ='Server.MapPath(「//」)&(「//db//seilbahn.mdb」)'; $ db = odbc_connect(「DRIVER = {Microsoft Access Driver(* .mdb)}; DBQ = $ dbpath」,「」,「」);'但它運行的錯誤是「[Microsoft] [ODBC Microsoft Access驅動程序]無效的文件名「...但存在的文件(相同的名稱等)。 –

+0

嘗試使用PDO,這將起作用。 – C1D

+0

hm,它表示'致命錯誤:類'PDO'在' –

1

使用PDO代替。它可以通過ODBC連接:

$pathToMDB = "path/to/db.mdb"; 
$db = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=$pathToMDB", 'admin');