2017-04-27 98 views
0

由于某些原因,我需要在我的PHP应用程序中使用ms-access,因此我已在WAMP中启用php_pdo_odbc扩展。其中显示在phpinfo()使用ODBC创建使用msaccess的PHP PDO连接时发生致命错误

但我无法连接数据库,它会返回以下错误。

(!) Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[IM002] SQLDriverConnect: 0 [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified' in C:\wamp64\www...\portals...\config.php on line 15

(!)> PDOException: SQLSTATE[IM002] SQLDriverConnect: 0 [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified in C:\wamp64\www...\portals...\config.php on line 15

$db_username = ''; //username 
$db_password = ''; //password 

//path to database file 
$database_path = "StudentLogInData.mdb"; 

//check file exist before we proceed 
if (!file_exists($database_path)) { 
    die("Access database file not found !"); 
} 

//create a new PDO object 
$database = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=realpath($database_path); Uid=$db_username; Pwd=$db_password;"); 

我使用的是Windows 7中(64位)WAMP 64位版本。搜索了很多Stackoverflow的解决方案,例如尝试运行32位版本,但无法安装在64位上。请帮助如何使其工作?

回答

2

realpath()是一个PHP函数,而不是ODBC驱动程序理解的东西。你可能想从DSN删除:

$database_path = realpath("StudentLogInData.mdb"); 
$database = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=$database_path; Uid=$db_username; Pwd=$db_password;"); 

随着对驱动程序的名称,你需要在你开始菜单键入ODBC和验证给定的名称是在您所在驱动程序标签:

ODBC Manager

+0

完成。但同样的错误,并且也尝试了DSN字符串中的完整路径,但同样的错误。我觉得这必须是64位版本。 – yaqoob

+1

嗯,很抱歉,我以为您已经安装了提供“Microsoft Access驱动程序(* .mdb,* .accdb)”的驱动程序:https://www.microsoft.com/zh-CN/download/details.aspx ?id = 13255 –

+0

我已经安装并重新启动机器,但仍然是相同的错误。我检查了驱动程序选项卡,我没有列出MS Access。截图http://imgur.com/a/l4hCL – yaqoob