PHP MS Access 连接不工作

标签 php database odbc ms-access-2010 wampserver

我正在尝试将 php 服务器连接到 ms 访问数据库,我已经尝试了所有方法,但仍然无法连接。

这是我的代码

<?php
$conn=odbc_connect('testdb','','');
//$conn=odbc_connect("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\wamp\www\test\testdb.accdb", '', '');
if (!$conn) {
  exit("Connection Failed: " . $conn);
}

$sql="SELECT * FROM testdb";
$rs[]=odbc_exec($conn,$sql);
if (!$rs) {
  exit("Error in SQL");
}

while (odbc_fetch_row($rs))    //<-------line 14
{
    $json_output[] = odbc_result($rs, "test");
    print(json_encode($json_output));

}
odbc_close($conn);
?>  

如果我用

 $conn=odbc_connect('testdb','','');

然后我得到以下错误

Warning: odbc_fetch_row() expects parameter 1 to be resource, array given in C:\wamp\www\test\new 1.php on line 14

如果我用

$conn=odbc_connect("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\wamp\www\test\testdb.accdb", '', '');

然后我得到下面的错误。

Warning: odbc_connect(): SQL error: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified, SQL state IM002 in SQLConnect in C:\wamp\www\test\new 1.php on line 3

我已经编辑了我的 php.ini 文件以包含 odbc 扩展

;extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
extension=php_pdo_odbc.dll  <--- here
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll

我还从 this link 下载并安装了 Microsoft Access Database Engine 2010 Redistributable .

我也确实尝试了显示的所有内容 in this video .

我也完全按照接受的答案 in this link 中的描述做了我在 64 位 Windows 7 上运行 64 位 WampServer 版本 2.4,还有 64 位 Microsoft Office。

抱歉我的英语不好,我是 php 和连接到 ms 访问的新手。我已连接到 mysql,但从未访问过。

最佳答案

测试证实,尽管报告了 WampServer 的 64 位安装,PHP 仍作为 32 位进程运行。较旧的“Jet”ODBC 驱动程序 (Driver={Microsoft Access Driver (*.mdb)}) 可以成功读取 .mdb 文件并且没有 64 位版本的 Jet,因此 PHP 必须是以 32 位运行。

现在,安装 64 位 Office 后,问题是 32 位 PHP 需要使用 32 位版本的较新的 Access 数据库引擎(又名“ACE”)驱动程序来操作 .accdb 文件,但是 Microsoft不支持同一台机器上的 32 位和 64 位版本的 ACE。 (网络搜索会显示有一种方法可以强制执行此操作,但不推荐这样做,因为它显然会破坏 Office。)

因此,最终解决方案将是以下之一:

  • 使用 .mdb 文件而不是 .accdb 文件,并在 32 位 PHP 下继续使用 Jet,
  • 找到一个将 PHP 作为 64 位进程运行的 WAMP 设置,或者
  • 切换到 32 位版本的 Office。

关于PHP MS Access 连接不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26193598/

相关文章:

sql-server - MS CDC 是否可以在没有系统管理员权限的情况下作为 RDS 管理的 SQL Server 的持续复制?

sql - 如何在通用模式上对数据变量方差进行建模? SQL

mysql - QODBC 连接字符串格式

MySQL 通过 ODBC 5.2 插入到 bit(1) 列

php - 如何使用条件语句将两个搜索结果语句合为一个?

php - 用户设置/隐私数据库设计

php - 如果输入有一个或多个问号,则从数据库获取数据。

c++ - MS SQL 存储过程使用 ODBC 返回结果集

javascript - PHP/Javascript - 在管理端启动/停止计数器

php - 多个网络应用程序和数据库的架构