php 中的数据库连接与 Linux 主机上的 MS Access

Posted

技术标签:

【中文标题】php 中的数据库连接与 Linux 主机上的 MS Access【英文标题】:database connection in php with MS Access on linux hosting 【发布时间】:2010-02-17 07:26:47 【问题描述】:

我在 php 上运行。 在我本地,我正在使用 Windows 环境,因此使用 ODBC 连接器很容易连接到 MS Access 数据库。

但是在我的实时服务器环境中,有 Linux,所以数据库连接存在问题。

那么在Linux环境下使用php连接MS Access DB的步骤是什么。

谢谢 阿维纳什

【问题讨论】:

没有回答问题,但您确定要在实时服务器环境中使用 MS Access?访问在扩展方面很糟糕,并且在并发用户中表现不佳(我什至可以这么说)。 我没有像用户这样的东西。我的用户不想实现在数据库中添加记录的接口。因此,他们希望在访问数据库中输入数据并在现场获取更新的详细信息。 您的用户不了解所涉及的问题。假设你已经完整地描述了情况,就不能按照他们希望的方式完成。您应该使用 Jet/ACE 以外的东西作为数据库。根据环境,他们仍然可以使用 Access 对其进行更新,但这些表将不再位于 Access/Jet/ACE 中。 【参考方案1】:

这也不是直接回答你的问题,而是解决想要使用Access更新网络数据的另一种方式:

您可以将您的 Access 数据库移植到实时(Web)服务器上的 mysql,并为您的用户使用 Access 作为该数据库的前端(基本上转换网站和 Access 的角色):

您可以使用MySQL Connector 驱动程序通过 ODBC 从 Access 连接到 MySQL 数据库,使用“外部数据”工具将表链接到 Access。这样,您将获得一个(更)严肃的数据库引擎,针对网络进行了优化,但保留了用户使用他们熟悉的工具操作数据的能力。

【讨论】:

【参考方案2】:

Web 服务器和客户端网络之间的关系不清楚。如果 Linux 服务器在客户端的本地局域网上并且运行 Samba,您当然可以将 Access/Jet/ACE 数据库存储在 Linux 服务器上,用户可以在 Access 中对其进行编辑。

然后你需要一个在 Linux 服务器上运行的 Jet 模拟器(据我所知,没有可用于 Linux 的 ACE 模拟,所以如果他们的数据库是 ACCDB 格式,那么你就不走运了,除非我对模拟器的了解已经过时了)。一些 Jet 模拟器是只读的,所以要小心。

现在,我不推荐这种情况,因为 Jet/ACE 不是为这种应用程序设计的。它在具有 SMB 网络的小型办公室/工作组环境中运行良好,但我不会将它用作任何非只读、概念证明或非常非常低读/写量的网站的后端。我当然不会建议将相同的 MDB 用作网站后端并由交互式 Access 用户同时使用。

如果这种情况是正确的,如果您将后端移植到在 Linux 上运行的服务器数据库,您的用户仍然可以使用 Access。我一直都在使用 MySQL,因为我是一个 Access 白痴,所以我依靠 phpMyAdmin 作为我的用户界面来管理我的 MySQL 数据库。 Access 用户应该很容易理解以便对架构进行处理。使用 MyODBC,您可以在 Access 中设置链接表以及报表和表单等,它们的工作方式与使用 Jet 后端几乎相同。

但我强烈怀疑您的客户是否将他们的网站托管在连接到其办公室 LAN 的 Linux 服务器上。更有可能的是 Linux 服务器是共享 Web 托管,在这种情况下,将没有可用的 SMB 网络,因此您将无法从网站和交互式用户编辑单个 Access 数据库。这是一件好事,因为一开始就不建议这样做。

使用共享主机可能允许您打开一个端口到服务器数据库(我网站的托管服务器同时提供 MySQL 和 PostgreSQL,但只允许远程访问 MySQL 并且只能通过主机名/ IP 地址。这可能不适用于办公室 LAN。任何允许从狂野和毛茸茸的 Internet 对数据库服务器进行开放无限制访问的 Web 主机都可能不是您的客户端应该使用的。一种选择是,如果他们提供 *** 支持,在这种情况下可以使用 ***。但根据我的经验,网络主机为此收费(实际上是不合理的),因此通常不是一个好的选择。

因此,您不太可能能够提供与网站上运行的服务器数据库的实时连接。在这种情况下,您只能以某种方式同步数据库。如果网站完全是 Access 数据库的从属(即网站上没有编辑、添加或删除),那么它可以非常简单,因为您只需编写脚本将数据导出到您上传到的一个或多个文件网站,然后在网站上处理以替换现有数据。

如果您有一个多主机方案(在两个位置进行更新),情况会复杂得多,尤其是如果更新必须双向进行。我已经对这个场景的 Access 端进行了编程,即将网站上的 MySQL 数据库与 Access 数据库同步,这不是一项简单的任务。

如果您可以在两端都安装 MySQL,它可能会更容易一些(假设您可以设置复制,这在低端 Web 托管场景中对我来说似乎不太可能),但我不会指望它。

根据我对这种情况的了解,我的评估是,您的客户必须重新考虑整个事情,因为如果没有很多变通方法,实际上就不可能进行集成。

如果网站不是公开的,但为了支持远程用户,需要考虑的一点是,Access 2010 将添加一些与 Sharepoint Server 2010 集成的惊人支持,这将允许将 Access 数据库发布到 Sharepoint Server 并在其中运行网络浏览器。另一方面,如果情况仅限于远程用户,则 Access 应用程序可以在终端服务器上运行,从而为大家省去很多麻烦。

【讨论】:

【参考方案3】:

我没有在 Linux 中使用过访问,但快速搜索给了我这个。

Microsoft Access Database using Linux and PHP

【讨论】:

【参考方案4】:

我个人建议移植到可在 Windows 和 Linux 上运行的 DBMS。但是,如果您必须坚持使用访问权限,则可以查看:

http://www.unixodbc.org/ 或者 http://www.openlinksw.com/

【讨论】:

【参考方案5】:

如果您在共享主机上,Linux 服务器很可能缺乏 ODBC 支持。使用 SQLite 会更好,因为它可以在 Linux 和 Windows(以及 OS X)上运行,使用 PHP 不会出现任何重大问题...

【讨论】:

对于 SQLLite,您的 Access 用户使用什么作为他们的前端应用程序? 您可以在设定的时间迁移数据(因为如果我阅读他的 cmets,他的在线数据库似乎是只读的)或通过使用 SQLite ODBC 驱动程序链接表将您的 Access 前端应用程序连接到 SQLite (当然,它必须安装在每台客户端机器上)。 MySQL 也是如此,您应该仍然可以使用前端(好吧,也许您必须进行一些小的更改 - 即,如果您使用特定的 DB 函数)。

以上是关于php 中的数据库连接与 Linux 主机上的 MS Access的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose 没有与 Namecheap 共享主机节点 js 应用上的数据库建立连接

VMware与Windows主机交换文件

解决数据库连接错误 您在wp-config.php文件中提供的数据库用户名和密码可能不正确,或者无法连接到localhost上的数据库服务器,这意味着您的主机数据库服务器已停止工作。

ssh 服务器连接到主机 xxx 端口 22:linux-ubuntu 上的连接超时

Linux 远程连接sftp与ftp

使用putty连接本地VirtualBox上的centos7 linux主机