使用 pdo-odbc 连接 php 和 .mdb 的 PHP 问题

Posted

技术标签:

【中文标题】使用 pdo-odbc 连接 php 和 .mdb 的 PHP 问题【英文标题】:PHP Problem connecting php and .mdb with pdo-odbc 【发布时间】:2020-02-29 13:04:04 【问题描述】:

我有需要 MS Access 的 php 程序,所以我不得不使用 odbc。在本地,使用 DSN 运行良好:

$db = new PDO("odbc:MyDSN");

我把php和odbc放在服务器上远程访问也没有问题:

$db = new PDO("odbc:DRIVER=MDBTools; DBQ=Data.mdb;");

但由于某种原因,我负担不起使用它的费用。我想将 php 与数据库一起放在服务器上,但我想将 odbc(或 odbc 驱动程序)放在客户端上,如下所示:

$db = new PDO("odbc:127.0.0.1\foo\bar\odbc.ini; DBQ=Data.mdb;");

我似乎暂时无法使用它。我使用 Ubuntu 64bit 作为服务器,Windows 7 作为客户端

更新 1:我找到了一种方法,但它需要修改 PHP 本身(类、结构等)我希望有人可以帮助我获得替代解决方案

更新 2:另一种解决方案,但需要第三方软件。

【问题讨论】:

1) 服务器是否真的可以访问客户端上的这个文件? 2) 127.0.0.1,当在服务器上执行时,将解析到服务器本身,而不是客户端。 3) 我找不到任何地方说您的最后一个示例实际上是 ODBC 的有效连接字符串-您能指出一些文档吗? 4)你为什么要这样做?放在服务器上有什么问题? 5) 访问是 Web 应用程序后端的糟糕选择。不能迁移到其他数据库平台吗? 1 & 2 是的。 3)是的,每个文档中都没有这样的东西,我什至不知道那行代码是否可以工作。 4) 好吧.. 呃,.. 5) 我希望我可以,但是 Access 与软件捆绑在一起,网络应用程序必须同时访问它。 你能分享更多细节吗? “用不起”听起来很模糊,这是什么意思?如果你找到了解决问题的方法,为什么不使用它呢?该解决方案究竟涵盖了原版 PHP 中不存在的哪些内容? @NicoHaase 我找到的解决方案需要修改 PHP5 或 PHP7 本身(那些 DLL 或 .SO 文件),这很糟糕,第二个解决方案需要 3rd 方程序,但我不想依赖这样程序。原因,至少我可以说是我正在试验这样的可能性,并为了服务器的利益 【参考方案1】:

但由于某种原因,我负担不起使用它的费用。我想把php放在 服务器与数据库一起,但我想放置 odbc (或 odbc 驱动程序)在客户端,如下所示:

驱动程序必须由 PHP 加载,在这种情况下,它是“客户端”。也就是说,您必须为 Ubuntu 找到合适的 MSAccess ODBC 驱动程序。

检查这个 SO 线程: ODBC connection to MS-Access on Ubuntu

【讨论】:

当然这些我都知道,只是不能远程工作……反正赏金是浪费,我给你。

以上是关于使用 pdo-odbc 连接 php 和 .mdb 的 PHP 问题的主要内容,如果未能解决你的问题,请参考以下文章

pdo-odbc 不适用于绑定值,nvarchar 和 text 在等于运算符中不兼容

带有 PHP 的 MDB/ODBC - 错误/分组查询结果

为许多用户通过 PHP 访问打开的 MDB 文件

PHP使用pdo连接access数据库并循环显示数据操作示例

使用 php 访问 MDB

访问 mdb 中的 PHP 和日期格式