【发布时间】:2014-11-29 09:02:38
【问题描述】:
我正在尝试将 php 服务器连接到 ms access 数据库,但我已经尝试了所有方法,但仍然无法连接。
这是我的代码
<?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 中的内容完成了操作,并且我在 Windows 7 64 位上运行 64 位 WampServer 版本 2.4,并且还有 64 位 Microsoft Office。
对不起,我的英语不好,我对 php 和连接到 ms 访问都是新手。我已经连接到mysql但从未访问过。
【问题讨论】:
-
有你的脚本
echo (8 * PHP_INT_SIZE) . "-bit<br/>";。结果(“32 位”或“64 位”)必须与您安装的 Access 数据库引擎的版本匹配。 -
它给了我 32 位的输出。应该是64位的吧??
-
嗯。答案here 表明上述测试可能具有误导性。您能否创建一个 .mdb 文件进行测试并尝试使用
Driver={Microsoft Access Driver (*.mdb)}连接到它(不带“,*.accdb”)? -
得到不同的错误“odbc_fetch_row() 期望参数 1 是资源,数组在第 15 行的 C:\wamp\www\test\new 1.php 中给出”
-
啊哈。我很确定您收到 "odbc_fetch_row() 期望参数 1 是资源 ..." 错误,因为
$rs[]=odbc_exec($conn,$sql);。改为使用$rs=odbc_exec($conn,$sql);尝试您的 .mdb 测试。
标签: php database odbc ms-access-2010 wampserver