2010-02-08 133 views
3

我在查询一个Microsoft Access 2003数据库(.mdb文件)是成功的,现在我想的的Microsft Access 2007年。我曾尝试以下做同样的:使用ODBC_CONNECT连接到MS Access 2007 - 驱动程序中出错?

if($type[1]=='accdb'){ 
    echo 'accdb'; 
    //2007 Microsoft Access 
    $connection = odbc_connect("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$mdbFilename;Persist Security Info=False;", $username, $password); 

}else{ 
    echo 'mdb'; 
    //2000, 2003 Microsoft Access 
    $connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdbFilename", $username, $password); 

} 

然而,对于访问2007年数据库我得到这个错误:

Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC Driver Manager] 
Data source name not found and no default driver specified, SQL state IM002in SQLConnect 
in E:\export.php on line 38 
+0

你可以发布$ mdbFilename吗? – 2010-02-08 15:44:58

+0

这只是我的数据库的路径,它从C:\ Users \ A \ Documents \ tester_07.accdb更改为C:\ Users \ A \ Documents \ tester.mdb。 – Abs 2010-02-08 15:45:52

+0

如果我的路径中有空格,你是否问过。 – Abs 2010-02-08 15:47:01

回答

2

如果有人想知道如何做到这一点。这对我有效。

try{ 
    $dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=$mdbFilename", $username, $password); 
}catch(PDOException $e){ 
    echo $e->getMessage(); 
} 
2

IKIK这是超级挖掘坟墓,但..

$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=" . $mdbFilename, $username, $password); 

这应该工作。

+0

为什么要发布与接受的答案相同的答案,并且代码比接受的代码差? – Konstantin 2017-06-29 06:55:22