如何在线获取静态 MS-Access DB 并使用 PHP 连接到它?

Posted

技术标签:

【中文标题】如何在线获取静态 MS-Access DB 并使用 PHP 连接到它?【英文标题】:How to get static MS-Access DB online and connect to it using PHP? 【发布时间】:2011-07-26 13:51:11 【问题描述】:

在工作中,我的任务是使用连接到 MS-Access 数据库的 php 构建在线表单。在你们开始提到在线使用 Access 的缺点之前,此解决方案适用于 INTRAnet 站点,并且流量最小,而且此数据库不是由我创建的,我无法切换到另一个不那么烦人的数据库选项。

准备 MS-Access 数据库 (.accdb) 以在线移动

根据我的研究,使用 PHP 实际连接到 MS-Access 数据库的选择很少,而且我无法找到有关如何获取此数据库的良好文档,该数据库目前仅驻留在共享驱动器上一个 .accdb 文件或其他东西,放到一个我可以尝试连接它的杂乱工作的地方和表格中。目前我什至不确定它是否受密码/用户名保护。老实说,我对使用 MS-Access 一无所知,所以你能给我的任何提示都会很棒。如果它像将 .accdb 转换为 .mdb(我在研究中使用的文件扩展名)一样简单,然后将其放入根目录,那就太好了。到目前为止,我能找到的唯一文档是“不要使用 Access”,哈哈。

使用 PHP 连接到新在线 MS-Access 数据库(无需在服务器上安装任何东西)

现在我需要使用 PHP 连接到这个数据库。我找到了几个选项来执行此操作,但我无法实际访问服务器(除了我们站点的根目录)来安装库/数据源(例如 ODBC)会抑制其中的一些。如果我的逻辑是错误的,我可以通过在站点目录中进行更改来运行该选项,那就太好了!让我知道。我还发现有人推荐 adodb.inc.php 作为一个选项,但(http://phplens.com/lens/adodb/docs-adodb.htm#coding)上的文档对于如何连接,或者特别是一旦我这样做了我如何与之交互。

对不起,伙计们,我知道这是很多东西,但任何帮助都非常感谢,并且尽可能详细和清晰,因为我现在有其他项目在我的盘子上,没有太多时间投入超出我已经花费的研发。谢谢!

【问题讨论】:

accdb是2007年以后的access数据库格式,之前是mdb。 我认为没有在 ODBC 中设置就可以从 php 访问它。 没有机会保留他们用来构建此文件的任何 Access 前端,而是使用 SQL Server Express 作为后端? 【参考方案1】:

我很可能错了,但根据我的经验,将 PHP 连接到 Access 数据库的唯一方法是使用 ODBC 驱动程序。我不相信有办法直接建立联系。

【讨论】:

这就是我所担心的。您知道是否可以在我们自己的站点目录中设置 ODBC 内容?正如我上面所说,我无法访问整个服务器。 很可能不是。我什至不知道如何/是否可以在 UNIX 系统上完成,如果这就是你正在处理的。我只在 Windows 机器上建立过这种连接,这需要访问控制面板的数据源组件。 啊,是的,对不起。它是一个 IBM HTTP 服务器 (IHS)。我不知道它运行在什么平台上,因为它们可以在其中许多平台上运行(AIX、HP-UX、Linux、Solaris、Windows 和 z/OS),而且我们的 IT 部门并不是我所说的有帮助的。 这个问题确实在我的侧边栏中弹出,它可能对你有一些方向。祝你好运! ***.com/questions/1605473/… 谁能提供一些关于 ODBC 实施过程的超级清晰和简明文档的链接?如果我能说服高层相信需要安装它,那么我将需要一些超级简单的东西让他们给它。如果这给他们带来任何麻烦,他们可能不会这样做。【参考方案2】:

这完全超出了我的专业领域,因为我是一名 Access 开发人员,永远不必在您所处的环境中使用 Access 数据文件,但我的想法如下:

鉴于 Jet/ACE(MDB/ACCDB 文件的数据库引擎)是基于文件的数据库引擎,您需要 SMB 网络访问该文件。无法进行 HTTP 访问。

最简单的做法是将文件放在 HTTP 服务器可以访问的 Windows 文件服务器上,然后通过 ODBC 访问它(对于 Jet/ACE,它是基于文件的,不需要运行任何组件文件所在的文件服务器)。

只要在HTTP服务器上安装了相关的ODBC驱动就可以了。

另一件事:如果您可以使用 Access 2007/2010 将 ACCDB 保存为 MDB 文件,您将拥有更多的灵活性,因为大多数 ODBC 文档是针对 Jet 4,而不是针对 ACE(新与 A2007 一起引入的数据库引擎以及新的文件格式;它仍然是 Jet,只是一个新版本。

【讨论】:

【参考方案3】:

Copnsider 使用OpenLink Software'sMulti-tier ODBC to ODBC Bridge

该产品具有这样的客户端/服务器架构 -

网络服务器 -- php应用程序 OpenLink Generic ODBC Driver(多层客户端组件)

Windows 主机 -- 32bit OpenLink Request Broker(多层服务器组件) 用于 ODBC 数据源的 32 位 OpenLink 代理(多层服务器组件) Microsoft Access .mdb 文件 + 配置的 Access ODBC 数据源 (DSN)

【讨论】:

您与 OpenLink 的制造商有联系吗?您在 SO 上超过一半的帖子推荐它的事实看起来很可疑...... 是的 - 我为 OpenLink Software 工作 - 他们是商业 ODBC/JDBC/.Net 驱动程序/提供程序等的作者... 我的帖子没有恶意。我只是建议我们的产品作为经常被误解的场景的解决方案...... 我认为当您明确提及您的关联时,您的回复的可信度会提高。如果你不这样做,它会留下一个问题......

以上是关于如何在线获取静态 MS-Access DB 并使用 PHP 连接到它?的主要内容,如果未能解决你的问题,请参考以下文章

使用 fast_executemany 写入 MS-Access DB 不起作用

如何将数据从 ms-access 或 excel 导出到 IBM DB2 I-Series 数据库?

如何在 VBA 代码中的 ms-access 中执行查询?

MS-Access 2007 - 如何在点击事件中以编程方式访问子表单列数据

将 Excel 中的动态和静态范围导入到 MS-Access 中,而不是从单元格 A1 开始

我无法将 php 与 ms-access db 连接