Linux 环境下 PHP 如何获取 Access 数据库数据

医院里面新进了一台精液分析仪,分析仪的图文报告工作站是单机版的,用的是微软的 Access 数据库,那么就要想办法把单机版的 Access 数据库对接出来,能让医生能查看电子版的精液分析报告。

Access 的数据库文件可以通过文件同步工具同步到网络文件夹下,但原有其他检查的数据对接使用的是 Linux,不打算单单为精液分析报告另起炉灶搭建新的 Windows 服务器,部署两套代码,就要想办法在原有的 Linux 服务器上面去尝试获取 Access 数据库数据。

第一步,为 php 安装 odbc 的支持

apt-get install php7.1_odbc

第二步,为 odbc 添加访问 access 数据库的支持

apt-get install odbc-mdbtools

mdbtools 是 Linux 下面访问 Access 数据库的解决方案,安装完成后,会自动在 /etc/odbcinst.ini 文件中添加 ODBC 支持 mbdtools 的配置信息。

然后就需要设置 DSN,设置的文件为 /etc/odbc.ini

第三步,中文表名惹的祸

设置完成后,满心欢喜的在 php 中书写代码,期待成功的那一刻。

$connection=newPDO('odbc:Driver=MDBTools;DSN=JinYe;');

$query='select*from 表1';

$result=$connection->query($query)->fetchAll(\PDO::FETCH_ASSOC);

returnjson_encode($result);

但是天不遂人愿,程序报08001 Couldn't parse SQL的错误,反复查找网络的文章与上述的步骤哪一步没有做对,找不到原因。在 Linux 下面,使用 isql 命令对数据库进行操作:isql -v JinYe进入操作的界面后,发现无法输入中文的表名「表1」。然后把中文表名「表1」更改成「table1」,不报错误了,果真是中文环境的原因。发现由于是使用 Docker ,所以没有配置中文的环境变量,猜想配置中文的环境变量后或许能够解决这个问题(在这之前几乎想要放弃了)。

在网上找到了解决方案(见参考链接),配置了中文环境,然后就成了。

小结:

没有什么小结,坚持写文章,期待早日获取微信文章赞赏资格

参考链接:

PDO: How to access Microsoft Access file on Linux?https://stackoverflow.com/questions/13473149/pdo-how-to-access-microsoft-access-file-on-linux

odbc-mdbtools_0.7.1-1ubuntu1_amd64.debhttps://ubuntu.pkgs.org/14.04/ubuntu-main-amd64/odbc-mdbtools_0.7.1-1ubuntu1_amd64.deb.html

在Docker容器bash中输入中文http://blog.shiqichan.com/Input-Chinese-character-in-docker-bash/

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180607G21MJF00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券