我需要将 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);
我不知道我还能尝试什么:-(