2012-12-09 90 views
0

我试图创建一个使用PDO一个简单的连接(在localhost - XAMPP):ACCDB和PDO PHP连接错误

<?php 
try{ 
    // Connect 
    //$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=.\db\icr.accdb;Uid=Admin"); 
    $dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\xampp\htdocs\bd\db\icr.accdb;Uid=Admin"); 

    /*** The SQL SELECT statement ***/ 
    $sql = "SELECT * FROM Miasta"; 
    foreach ($dbh->query($sql) as $row) 
     { 
     print $row['Nazwa'] .' - '. $row['IDWojewództwa'] . '<br />'; 
     } 

    /*** close the database connection ***/ 
    $dbh = null; 
} 
catch(PDOException $e) 
    { 
    echo $e->getMessage(); 
    } 
?> 

但后来我得到这个错误:

SQLSTATE[HY000] SQLDriverConnect: 63 [Microsoft][Driver ODBC Microsoft Access]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x5f8 Thread 0x1124 DBC 0x3608134 Jet. 

任何想法?

+0

你试图连接到MS Access数据库的新ACCDB格式。但我不相信您使用的驱动程序支持它,或者您使用的DSN可能不适合驱动程序。尝试从您的DSN中删除'* .mdb',或者仅使用'* .mdb',而不使用额外的* .accdb'并查看是否有帮助。 – Sherif

+0

无论如何它们应该是向后兼容的。扩展应该不重要。至少这是我的知识,但我想你可以先尝试。 – Sherif

回答

3

非常感谢vodich,这里是解决方案:

$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\\xampp\\htdocs\\bd\\db\\icr.accdb;Uid=Admin"); 
0

这个怎么样

PDO("odbc:Driver=("odbc:Driver={Microsoft Access Driver (*.mdb)}; 
     Dbq=C:\xampp\htdocs\bd\db\icr.accdb;Uid=Admin"); 
+0

您的回答存在小错误 $ dbh = new PDO(“odbc:Driver = {Microsoft Access Driver(* .mdb)}; Dbq = C:\ xampp \ htdocs \ bd \ db \ icr.accdb; Uid =管理“); 现在我收到此错误 SQLSTATE [HY000] SQLDriverConnect:-1044 [Microsoft] [驱动程序ODBC Microsoft Access]不正确的文件名。 – user1483208

+0

尝试此链接也许它是相同的问题http://forums.phpfreaks.com/topic/182151-solved-pdo-connect-to-microsoft-access-database/ – vodich