在 Unix 中如何处理 PHP 中的 MS Access?
What to do about MS Access in PHP in Unix?
我需要从 MS Access 2007 中提取数据(mdb 和 accdb 文件),用于用 PHP 编写的网站 7. 页面不需要是动态的或交互式的。他们只需要呈现存储在数据库中的数据。
本地开发环境:Windows7、IIS 7.5
在线服务器:A2 Hosting,Linux(云Linux服务器版本6.9),Apache/2.2.34
ADOdb webpage for Access 表示 "Windows Yes, Unix No"。我想这意味着我可以在我的本地环境中使用 ADOdb 连接到 Access,但不能在在线服务器上连接。我想我有以下选择:
- Whosebug 对此 (1, 2, 3) 提出了一些问题,并给出了在 PHP 中连接到 Access 的代码的答案。虽然答案没有这么说,但我猜测该代码只能在 Windows 中工作,因为如果在 Unix 中连接到 PHP 中的 Access 如此容易,那么 ADOdb 就可以做到!因此,如果我对此是正确的,那么这不是一个可行的选择。
- PHP 手册在 Database issues 上有一个页面说 PHP 可以访问 Access,但它似乎只适用于 运行ning in [=55] =] 或 "running PHP on a Unix box and want to talk to MS Access on a Windows box"。因此,这似乎也没有为 运行 在 Linux 服务器上联机网站提供可行的解决方案。
- 将需要的数据库部分提取到可以在 Unix 中访问的其他文件中,例如 CSV 文件,并将其用作网站的数据库。如果我使用 CSV 执行此操作,我想我不需要 ADOdb,而只使用 fgetcsv()。这是一个不够优雅的解决方案,但如果无法在 Unix 中直接访问 Access,这可能是最好的解决方案。 (我可以使用 MySQL 而不是 CSV,但这似乎有很多不必要的开销。)
- 运行 我 Windows 机器上的页面使用 ADOdb 访问 Access。将来自数据库的页面部分保存为单独的 HTML 段文件,并在页面 运行 在线时 include() 它们。 (该脚本可以检测它 运行 所在的环境,如果是本地环境,则访问数据库,如果在线,则包含() HTML 段文件。)
- 将在线网站从 Linux 移动到 Windows 服务器,因此 PHP 可以直接使用 ADOdb 访问 Access。
- 将整个数据库从 Access 转换为其他数据库,例如 MySQL。这在目前是不切实际的,尽管这可能是未来的一个选择。
我是否正确理解了我的选择?我已经按照我认为的优先顺序列出了它们,所以除非有人另有建议,否则我想我会选择第三个(提取到 CSV,使用 fgetcsv(),没有 ADOdb),因为前两个不行。
感谢您的帮助。
主要问题是 ODBC 驱动程序。 {Microsoft Access Driver (*.mdb, *.accdb)}
随 Microsoft Access 或 Microsoft Access 数据库引擎一起提供,它们都是 Windows-only。
但是,还有可在 Unix 和 unixODBC 上运行的备用 ODBC 驱动程序。一个流行的开源的是 mdbtools,它是有限的,但是可以使用 PDO 和 ODBC 将 Access 连接到 unix 上的 PHP。还有功能更全面的商业替代品。
一旦你开始工作,在 PHP 中使用 ODBC 驱动程序应该不是问题。请注意,在共享主机上,这可能是不可能的。
或者,您可以使用 php-jdbc bridge with UCanAccess。这可能仍然是全开源的,并且比 mdbtools 功能更齐全,但正确设置起来更复杂。
您不需要将 "the entire database" 从 Access 转换为使用 Mysql,只需要 table。然后,您可以使用 MySql odbc 连接器将它们 link 返回到 Access 数据库中,只要 table 名称相同,您甚至不会注意到差异,所有表单,查询,一切都会工作。
然后您将在本地计算机上安装 MySql 服务器 运行ning,如果您创建一个具有正确权限的用户并通过路由器转发端口(从端口 3306 或任何端口转发流量)你分配给你的服务器,你的机器的端口)并允许流量通过你的防火墙,然后你的网站可以访问,读取和写入你的数据库。
如果你想从php查询数据库,mysqli_query就可以了。大多数网站 运行 来自数据 运行 使用 MySql,因此这也是一个面向未来的解决方案。
我需要从 MS Access 2007 中提取数据(mdb 和 accdb 文件),用于用 PHP 编写的网站 7. 页面不需要是动态的或交互式的。他们只需要呈现存储在数据库中的数据。
本地开发环境:Windows7、IIS 7.5
在线服务器:A2 Hosting,Linux(云Linux服务器版本6.9),Apache/2.2.34
ADOdb webpage for Access 表示 "Windows Yes, Unix No"。我想这意味着我可以在我的本地环境中使用 ADOdb 连接到 Access,但不能在在线服务器上连接。我想我有以下选择:
- Whosebug 对此 (1, 2, 3) 提出了一些问题,并给出了在 PHP 中连接到 Access 的代码的答案。虽然答案没有这么说,但我猜测该代码只能在 Windows 中工作,因为如果在 Unix 中连接到 PHP 中的 Access 如此容易,那么 ADOdb 就可以做到!因此,如果我对此是正确的,那么这不是一个可行的选择。
- PHP 手册在 Database issues 上有一个页面说 PHP 可以访问 Access,但它似乎只适用于 运行ning in [=55] =] 或 "running PHP on a Unix box and want to talk to MS Access on a Windows box"。因此,这似乎也没有为 运行 在 Linux 服务器上联机网站提供可行的解决方案。
- 将需要的数据库部分提取到可以在 Unix 中访问的其他文件中,例如 CSV 文件,并将其用作网站的数据库。如果我使用 CSV 执行此操作,我想我不需要 ADOdb,而只使用 fgetcsv()。这是一个不够优雅的解决方案,但如果无法在 Unix 中直接访问 Access,这可能是最好的解决方案。 (我可以使用 MySQL 而不是 CSV,但这似乎有很多不必要的开销。)
- 运行 我 Windows 机器上的页面使用 ADOdb 访问 Access。将来自数据库的页面部分保存为单独的 HTML 段文件,并在页面 运行 在线时 include() 它们。 (该脚本可以检测它 运行 所在的环境,如果是本地环境,则访问数据库,如果在线,则包含() HTML 段文件。)
- 将在线网站从 Linux 移动到 Windows 服务器,因此 PHP 可以直接使用 ADOdb 访问 Access。
- 将整个数据库从 Access 转换为其他数据库,例如 MySQL。这在目前是不切实际的,尽管这可能是未来的一个选择。
我是否正确理解了我的选择?我已经按照我认为的优先顺序列出了它们,所以除非有人另有建议,否则我想我会选择第三个(提取到 CSV,使用 fgetcsv(),没有 ADOdb),因为前两个不行。
感谢您的帮助。
主要问题是 ODBC 驱动程序。 {Microsoft Access Driver (*.mdb, *.accdb)}
随 Microsoft Access 或 Microsoft Access 数据库引擎一起提供,它们都是 Windows-only。
但是,还有可在 Unix 和 unixODBC 上运行的备用 ODBC 驱动程序。一个流行的开源的是 mdbtools,它是有限的,但是可以使用 PDO 和 ODBC 将 Access 连接到 unix 上的 PHP。还有功能更全面的商业替代品。
一旦你开始工作,在 PHP 中使用 ODBC 驱动程序应该不是问题。请注意,在共享主机上,这可能是不可能的。
或者,您可以使用 php-jdbc bridge with UCanAccess。这可能仍然是全开源的,并且比 mdbtools 功能更齐全,但正确设置起来更复杂。
您不需要将 "the entire database" 从 Access 转换为使用 Mysql,只需要 table。然后,您可以使用 MySql odbc 连接器将它们 link 返回到 Access 数据库中,只要 table 名称相同,您甚至不会注意到差异,所有表单,查询,一切都会工作。
然后您将在本地计算机上安装 MySql 服务器 运行ning,如果您创建一个具有正确权限的用户并通过路由器转发端口(从端口 3306 或任何端口转发流量)你分配给你的服务器,你的机器的端口)并允许流量通过你的防火墙,然后你的网站可以访问,读取和写入你的数据库。
如果你想从php查询数据库,mysqli_query就可以了。大多数网站 运行 来自数据 运行 使用 MySql,因此这也是一个面向未来的解决方案。