使用 XAMPP 访问 .accdb
Using XAMPP to access .accdb
我正在为我和我妻子使用的图书数据库开发 Web 界面。我们一直将它保存在 .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 我原以为它会完全独立于机器并使用它自己的驱动程序,但好像 drive/connection 不见了。我有 运行 phpinfo 并已确认 ODBC 连接已启用,但我无法找到哪里可以确认它支持哪些扩展以确保这不是问题所在。
嗯...您需要 Access 数据库引擎才能处理 .accdb 文件。
您可以在此处下载数据库引擎 2016:https://www.microsoft.com/en-us/download/details.aspx?id=54920
确保在使用 64 位时使用 x64 版本的引擎 PHP,在使用 32 位时使用 32 位版本 PHP。
顾名思义,accdb 文件需要 Microsoft Access 驱动程序(*.mdb、*.accdb)。所以在该行上切换注释。
请注意,32 位 office 安装和 64 位 php 可能会遇到麻烦,反之亦然。所以匹配那些。
我正在为我和我妻子使用的图书数据库开发 Web 界面。我们一直将它保存在 .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 我原以为它会完全独立于机器并使用它自己的驱动程序,但好像 drive/connection 不见了。我有 运行 phpinfo 并已确认 ODBC 连接已启用,但我无法找到哪里可以确认它支持哪些扩展以确保这不是问题所在。
嗯...您需要 Access 数据库引擎才能处理 .accdb 文件。
您可以在此处下载数据库引擎 2016:https://www.microsoft.com/en-us/download/details.aspx?id=54920
确保在使用 64 位时使用 x64 版本的引擎 PHP,在使用 32 位时使用 32 位版本 PHP。
顾名思义,accdb 文件需要 Microsoft Access 驱动程序(*.mdb、*.accdb)。所以在该行上切换注释。
请注意,32 位 office 安装和 64 位 php 可能会遇到麻烦,反之亦然。所以匹配那些。