使用 ODBC 使用 msaccess 创建 PHP PDO 连接时出现致命错误

Fatal Error when creating PHP PDO connection with msaccess using ODBC

出于某些原因,我需要在我的 PHP 应用程序中使用 ms-access,因此我在 WAMP 中启用了 php_pdo_odbc 扩展。显示在 phpinfo()

但是我无法连接数据库,它returns出现以下错误。

( ! ) 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 位版本。搜索了很多 Whosebug 的解决方案,例如尝试 运行 32 位版本,但无法安装在 64 位上。请帮助如何让它工作?

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 并验证给定名称在您的 Drivers 中可用选项卡: