4

我需要将 LAMP(Linux Ubuntu 12.10、Apache 2、MySQL 5、PHP 5.3)服务器中的 PHP 脚本连接到 Access MDB 数据库(2003 版)。

1.unixODBC及驱动安装

Ubuntu 12.10 带有 unixodbc 2.2.14 软件包 ( http://packages.ubuntu.com/quantal/unixodbc )。安装很简单:apt-get install unixodbc libmdbodbc1 php5-odbc。这样我就有了带有 mdbTools 驱动程序和 ODBC PHP 功能的 unixODBC。

我使用 mdbtools 驱动程序编辑了 /etc/odbcinst.ini:

[MDBToolsODBC]
Description = MDBTools Driver
Driver = libmdbodbc.so.1

我使用 Access 数据源编辑了 /etc/odbc.ini:

[FormPulmo]
Description = FormulariCDRPulmo
Driver = MDBToolsODBC
Servername = localhost
Database = /mnt/svrfit/cdr/bd_pulmo_hardlink.mdb
UserName =
Password =
port = 5432

最后我从 shell 进行了测试,它起作用了:

> isql -v formpulmo
Connected!

2.PHP连接

最初使用 PHP 似乎一切正常:

$link = odbc_connect ('formpulmo',"","");
$res = odbc_exec ($link,"SELECT * FROM exampleTable");

第一个问题是试图访问名称中带有空格的表。示例:“示例表”。在 Windows 中,我必须把它放在括号中([example Table]),但它没有用。最后我找到了解决方案:

$res = odbc_exec ($link,"SELECT * FROM \"example Table\"");

在此解决方案之前,尝试执行 odbc_exec 的所有浏览器响应都是“错误 324 (net::ERR_EMPTY_RESPONSE)”

3. PHP问题!

但现在我坚持使用 UPDATE 语法。正常的查询是:

$res = odbc_exec ($link,"UPDATE [Registre cancer de pulmo] SET CIP = 'example' WHERE CIP = 'example'");

浏览器响应是:“错误 324 (net::ERR_EMPTY_RESPONSE)”(在 Firefox 中:“连接已重置”)。

3.1。尝试过的解决方案

UPDATE \"Registre cancer de pulmo\" SET CIP = 'example' WHERE CIP = 'example'
UPDATE \"Registre cancer de pulmo\" SET \"CIP\" = 'example' WHERE \"CIP\" = 'example'
UPDATE {Registre cancer de pulmo} SET {CIP} = 'example' WHERE {CIP} = 'example'

连接不同的游标:

odbc_connect ($odbcFormPulmo,"","",SQL_CUR_USE_ODBC);
odbc_connect($odbcFormPulmo,"","",SQL_CUR_USE_DRIVER);

我不知道我还能尝试什么:-(

4

1 回答 1

2

几周前,为了回答这个问题,我对与您的几乎相同的设置(Ubuntu 12.04 而不是 12.10)进行了一些测试,发现我根本无法mdbtools工作。我收集到有些有时可以让它完成某种工作,但 IMOmdbtools对于生产使用来说不够可靠。

对这个问题的回答中,我建议调查ODBTP作为替代方案。它是一个免费的 (GPL) TCP/IP 协议,允许您将查询传递给 Windows 机器,然后通过其 ODBC 驱动程序提交查询并将结果传回给您。我过去用过几次,效果很好。

于 2013-06-04T10:30:23.147 回答