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/
TAG:mengdream |