【发布时间】:2013-05-30 16:14:24
【问题描述】:
我需要将 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'");
浏览器响应为:“Error 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);
我不知道我还能尝试什么:-(
【问题讨论】:
-
有一种简单的方法可以通过使用 Jackcess 库的简单 Java 应用程序来做到这一点。请参阅我的回答:stackoverflow.com/questions/24342165/…
标签: php ms-access ubuntu odbc unixodbc