使用 ODBC 使用 msaccess 创建 PHP PDO 连接时出现致命错误
Posted
技术标签:
【中文标题】使用 ODBC 使用 msaccess 创建 PHP PDO 连接时出现致命错误【英文标题】:Fatal Error when creating PHP PDO connection with msaccess using ODBC 【发布时间】:2017-09-25 02:03:50 【问题描述】:由于某些原因,我需要在我的 php 应用程序中使用 ms-access,因此我在 WAMP 中启用了php_pdo_odbc
扩展。显示在phpinfo()
但是我无法连接数据库,它返回以下错误。
( ! ) 致命错误:带有消息的未捕获异常“PDOException” 'SQLSTATE[IM002] SQLDriverConnect: 0 [Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序 C:\wamp64\www...\portals...\config.php 在第 15 行
(!)> PDOException: SQLSTATE[IM002] SQLDriverConnect: 0 [微软][ODBC Driver Manager] 未找到数据源名称且没有默认驱动程序 在第 15 行的 C:\wamp64\www...\portals...\config.php 中指定
$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 位版本。搜索了很多 *** 的解决方案,例如尝试运行 32 位版本,但无法在 64 位上安装。请帮助如何使它工作?
【问题讨论】:
【参考方案1】: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 选项卡中可用:
【讨论】:
完成。但同样的错误,也尝试了 DSN 字符串中的完整路径,但同样的错误也是如此。我觉得这必须是 64 位版本。 好吧,抱歉,我假设您已经安装了提供“Microsoft Access Driver (*.mdb, *.accdb)”的驱动程序:microsoft.com/en-US/download/details.aspx?id=13255 我已经安装了它并重新启动了机器,但仍然是同样的错误。我检查了我没有列出 MS Access 的驱动程序选项卡。截图imgur.com/a/l4hCL 那么显然没有安装成功。 PHP 将无法使用驱动程序,直到它可用。 但是我从你的链接安装了驱动程序。现在能做什么?以上是关于使用 ODBC 使用 msaccess 创建 PHP PDO 连接时出现致命错误的主要内容,如果未能解决你的问题,请参考以下文章