【问题标题】:Fatal Error when creating PHP PDO connection with msaccess using ODBC使用 ODBC 使用 msaccess 创建 PHP PDO 连接时出现致命错误
【发布时间】: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 位版本。搜索了很多 Stackoverflow 的解决方案,例如尝试运行 32 位版本,但无法在 64 位上安装。请帮助如何使它工作?

【问题讨论】:

    标签: php ms-access pdo odbc wamp


    【解决方案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 将无法使用驱动程序,直到它可用。
    • 但是我从你的链接安装了驱动程序。现在能做什么?
    猜你喜欢
    • 1970-01-01
    • 2019-09-23
    • 2012-11-03
    • 1970-01-01
    • 2018-09-01
    • 2011-06-14
    • 2013-03-27
    • 2014-06-10
    • 2017-05-25
    相关资源
    最近更新 更多