PHP 远程连接到 MS Access 2016 数据库

Posted

技术标签:

【中文标题】PHP 远程连接到 MS Access 2016 数据库【英文标题】:PHP Remote Connection to MS Access 2016 Database 【发布时间】:2016-09-06 14:34:15 【问题描述】:

我正在从提交的 html 表单中获取信息,该表单自动输入到 Access 2016 数据库中。我对这个过程的理解有限,请大家多多包涵。

HTML 表单存储在兼作 Web 服务器的 64 位 Windows Server 2008 R2 DC 上。此服务器上也已安装和配置 php

数据库存储在单独的 64 位 Windows Server 2008 R2 虚拟服务器上。

我看过很多关于 PHP 和 SQL(mysql、SQL Server 等)的文章,但关于 PHP 和 MS Access 的文章却很少。我现在明白我需要建立一个 ODBC 连接,但这就是我开始迷路的地方。

问题:

我认为需要在 Web 服务器上设置/配置 ODBC 连接是否正确? 我认为只需要 64 位 ODBC 驱动程序是否正确? (虽然我非常确信这是正确的,但我有一个挥之不去的疑问,因为一些 32 位计算机将访问 HTML 表单,因此还需要 32 位 ODBC 驱动程序。这可能看起来很傻但我想确认一下。) ODBC 驱动程序在哪里?我进行了搜索,它让我下载了“Microsoft Access Database Engine 2010 Redistributable”。这就是我要找的吗? (我承认,除非很明显,否则我倾向于觉得我在错误的地方。除非有人可以确认“可再发行”与“ODBC 驱动程序”相同,否则我倾向于认为我在寻找在错误的事情上。)

感谢您的帮助! 埃里克

【问题讨论】:

远程机器的位数无关紧要。他们不是连接到数据库的,PHP 是实际连接的。这意味着您需要使用适合您的 PHP 的 ODBC DSN - 如果它是 32 位 php,那么您需要 3 位 dsn。 谢谢你,马克。我认为可能是这样,但很高兴得到确认。 【参考方案1】:

由于在您的 Web 服务上运行的所有代码都是 x64 的,所以是的,您当然需要 x64 Access (ACE) odbc 驱动程序。 您选择 Access Database Engine 2010 Redistributable 是正确的。事实上,您不妨使用 2013 年的一款。不要忘记选择 x64 版本。

x32 或 x64 计算机连接到网站这一事实无关紧要 - 服务器和 Web 代码作为 x64 进程运行,因此您需要使用 x64 odbc 驱动程序进行 Access。

此外,正如您所指出的,accDB 访问文件可以位于其他服务器上,但该文件名必须位于 Web 服务器拥有完全权限的文件夹中。因此,您不使用 IP 地址,而是使用合法 Windows 文件夹和合法 Windows 文件(在本例中为访问 accDB 文件)的完全限定 Windows 路径名。所以请记住,您没有连接到 Access 数据库,但实际上是在打开一个 windows 文件。您无需连接到 Word 文档,而是打开它。您不连接到 PowerPoint 文件,而是打开它。而且您没有连接到 Access accDB 文件,但您的软件(odbc 驱动程序)实际上会直接打开 Access 文件的 windows 操作系统文件。

因此,与允许通过套接字(tc/ip + IP 地址)进行连接的网站或 SQL 服务器不同,Access 文件不是基于套接字的系统,但实际上是一个平面 jane windows 文件,它将由您的软件在进程中打开。因此,Access 文件的打开发生在 Web 服务器上——即使 Access accDB 只是插入该服务器的 USB 跳转驱动器,或服务器网络上的其他文件共享。我们讨论的是 Web 服务器上打开该 Access 文件的代码——因此该 Access 文件必须位于一个文件夹中,该文件夹可以被正在运行的 Web 服务器代码直接访问。

因此,例如,您不需要在第二台服务器上安装 ACE 数据引擎 - 只有运行代码的地方才需要 ODBC 驱动程序。这里的重要问题是大多数 ODBC 驱动程序允许您使用数据库引擎“连接”到某些服务器。因为 Access 是基于文件的,所以必须在使用 ODBC 驱动程序的计算机上安装 ODBC 驱动程序和数据引擎。因此,该驱动程序将始终使用 ODBC 驱动程序在本地和同一台计算机上启动数据引擎的副本。当您使用 SQL 驱动程序时,您需要 SQL 数据库引擎的本地副本 - 使用 Access!

【讨论】:

谢谢你,Albert...你的解释对我帮助很大! Albert...关于您的答案的另一个问题。 Albert...抱歉,我没有时间编辑上面的评论。关于你的回答,我还有几个问题。您提到了 ODBC 驱动程序以及数据引擎。昨天,我开始认为你在说它们是同一回事。现在我意识到它们是两种不同的东西。一是实际的 ODBC 驱动程序……二是 64 位“Microsoft Access Database Engine 2010 Redistributable”(或 2013 Redistributable)。两者都需要安装在 Web 服务器上……对吗? 正确。是的,它们都需要安装 ODBC 和数据引擎,实际上没有单独的 ODBC 驱动程序下载或安装。您只能选择安装安装 ODBC 驱动程序和数据引擎的可再发行组件。无法单独安装这两个部分。

以上是关于PHP 远程连接到 MS Access 2016 数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 连接远程 MS Access DB

使用 MS Access 和 ODBC 连接到远程 PostgreSQL

无法连接到远程 MS Access 数据库

将 MS Access 连接到网络上的 SQL Server

多个 MS Access 前端连接到单个远程 SQL Server 后端

使用 PHP 连接到 MS Access DB