我需要为用 PHP 7 编写的网站从 MS Access 2007(mdb 和 accdb 文件)中提取数据。这些页面不需要是动态的或交互式的。他们只需要呈现存储在数据库中的数据。
本地开发环境:Windows 7、IIS 7.5
在线服务器:A2 Hosting, Linux (CloudLinux Server release 6.9), Apache/2.2.34
Access的ADOdb 网页显示“Windows 是,Unix 否”。我想这意味着我可以在本地环境中使用 ADOdb 连接到 Access,但不能在在线服务器上。我想我有以下选择:
- StackOverflow 对此(1、2、3)有一些问题,并提供了用于在 PHP 中连接到 Access 的代码的答案。虽然答案没有这么说,但我猜该代码只能在 Windows 中运行,因为如果在 Unix 中连接到 PHP 中的 Access 很容易,那么 ADOdb 就可以了!因此,如果我对此是正确的,那么这不是一个可行的选择。
- PHP 手册有一个关于数据库问题的页面说 PHP 可以访问 Access,但它似乎只适用于在 Windows 中运行或“在 Unix 机器上运行 PHP 并希望在 Windows 机器上与 MS Access 对话”。因此,这似乎也没有为在 Linux 服务器上在线运行网站提供可行的解决方案。
- 将所需的数据库部分提取到可以在 Unix 中访问的其他内容中,例如 CSV 文件,并将其用作网站的数据库。如果我使用 CSV 执行此操作,我想我不需要 ADOdb,而只会使用fgetcsv()。这是一个不优雅的解决方案,但如果没有办法在 Unix 中直接访问 Access,这可能是最好的选择。(我可以使用 MySQL 而不是 CSV,但这似乎是很多不必要的开销。)
- 使用 ADOdb 在我的 Windows 机器上运行页面以访问 Access。将来自数据库的页面部分保存为单独的 HTML 段文件,并在页面在线运行时包含()它们。(脚本可以检测它在哪个环境中运行,如果它是本地的,则访问数据库,如果在线,则包含() HTML 段文件。)
- 将在线网站从 Linux 移动到 Windows 服务器,以便 PHP 可以直接使用 ADOdb 访问 Access。
- 将整个数据库从 Access 转换为其他数据库,例如 MySQL。目前这是不切实际的,尽管这可能是未来的一种选择。
我是否正确理解了我的选择?我已经按照我认为的偏好顺序列出了它们,所以除非有人另有建议,否则我想我会使用第三个(提取到 CSV,使用 fgetcsv(),没有 ADOdb),因为前两个不会工作。
谢谢你的帮助。