使用XAMPP访问.accdb

时间:2018-06-18 17:24:26

标签: php ms-access xampp

我正在为我妻子和我使用的图书数据库的网络界面工作。我们一直将它保存在.accdb中,只是使用Access进行任何更改,但我想让它更容易访问。我有一个XAMPP运行的设置,我用于其他的东西所以我在那里做了一个文件夹来测试它。

<?php
    //$dbName = $_SERVER["DOCUMENT_ROOT"] . "/db/Books.mdb";
    $dbName = $_SERVER["DOCUMENT_ROOT"] . "db/Books.accdb";

    if (!file_exists($dbName)){
        die("No database file.");
    }

    $db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; Uid=; Pwd=;");
    // $db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=$dbName; Uid=; Pwd=;");

    $sql = "SELECT * FROM Books ORDER BY author";
    $rs = $db->query($sql);
?>

如果我将文件转换为.mdb我可以访问它没问题,但是如果我尝试将其作为.accdb并将连接字符串更改为* .accdb或* .mdb,* .accdb它将失败并显示:

Uncaught PDOException: SQLSTATE[HY000] SQLDriverConnect: -1028 [Microsoft][ODBC Microsoft Access Driver] Cannot open database '(unknown)'. It may not be a database that your application recognizes, or the file may be corrupt. in C:\xampp\htdocs\_index.php:13 Stack trace: #0 C:\xampp\htdocs\_index.php(13): PDO->__construct('odbc:DRIVER={Mi...') #1 {main}

使用XAMPP我认为它完全独立于机器并使用它自己的驱动程序,但它就像缺少驱动器/连接一样。我已经运行了phpinfo并确认已启用ODBC连接,但我无法确定在哪里确认它支持哪些扩展,以确保不是问题。

1 个答案:

答案 0 :(得分:2)

嗯......您需要使用Access数据库引擎来处理.accdb文件。

您可以在此处下载数据库引擎2016:https://www.microsoft.com/en-us/download/details.aspx?id=54920

确保在使用64位PHP时使用x64版本的引擎,在32位PHP中使用32位版本。

顾名思义,您需要 Microsoft Access驱动程序(* .mdb,* .accdb)来获取accdb文件。所以在那一行上切换评论。

请注意,您可能会遇到32位办公室安装和64位PHP的问题,反之亦然。所以匹配那些。