gpt4 book ai didi

php - unixODBC + mdbTools + PHP

转载 作者:可可西里 更新时间:2023-10-31 23:32:04 27 4
gpt4 key购买 nike

我需要将 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");

第一个问题是试图 Access 名称中包含空格的表。示例:“示例表”。在 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);

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

最佳答案

几周前回复this question我对与您的几乎相同的设置(Ubuntu 12.04 而不是 12.10)进行了一些测试,发现我根本无法让 mdbtools 工作。我收集到,一些 人可以有时 将其用于某种 工作,但 IMO mdbtools 不够可靠生产使用。

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

关于php - unixODBC + mdbTools + PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16914913/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com