在 Linux 上从 PHP 连接到 MS Access 数据库

Posted

技术标签:

【中文标题】在 Linux 上从 PHP 连接到 MS Access 数据库【英文标题】:Connecting to a MS Access database from PHP on Linux 【发布时间】:2020-07-05 22:49:36 【问题描述】:

我的客户多年来一直在运行 Windows 服务器,但我们现在正在为我为他们创建的 Web 应用程序转移到单独的 Linux 机器上。目前,我们在 Windows 服务器上运行 php,我们可以在该服务器上连接到同一磁盘上的 MDB 文件。这是来自外部方的文件,Web 应用程序使用 mysql。在新设置中,我们有一个通过 *** 连接的 Linux Web 服务器(Apache/MySQL/PHP)和一个 Windows 2016 服务器,我们在 MDB 文件所在的 Windows 服务器上安装了一个共享。到目前为止,一切都很好,但是我似乎无法查询 MDB 文件。建立了连接,那里没有错误,但是我运行的每个查询都返回错误或不确定。这是我的代码:

<?php
$db=new PDO("odbc:Driver=MDBTools; DBQ=/mnt/<dir>/<file>.mdb;");
$query=$db->query("SELECT * FROM <table>;");

$return=array();
if($query) 
     while($result=$query->fetch(PDO::FETCH_ASSOC)) 
         $return[]=$result;
     
else $return['error']=1;

//close
$query=null;
$db=null;

print_r($return);
?>

目前一切都返回错误> 1。

PDO 抛出以下错误:

Connection failed: SQLSTATE[08001]: Client unable to establish connection: 1 Couldn't parse SQL (SQLExecute[1] at /build/php7.2-pRoOsC/php7.2-7.2.24/ext/pdo_odbc/odbc_stmt.c:260)

【问题讨论】:

您是否设置了 PDO 以在出现问题时抛出异常?在这里获取实际的错误消息会很有帮助。 @ADyson 你能给我一些建议吗? 手册里已经有! php.net/manual/en/pdo.error-handling.php 将 try/catch 添加到组合中仍然显示错误 > 1. 您是否也添加了-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 【参考方案1】:

我发现我的问题的解决方案是删除 ;来自查询。

【讨论】:

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

在 Linux 上从 .NET Core 连接到 Informix

在 Linux 上从 Python 连接到受保护的 WiFi

在 Mac 上从 R 连接到 Oracle

如何在 PHP7 中连接到 MS Access 数据库?

无法在 Windows 上从 Python 连接到 MSSQL Server

将 php 连接到 MS SQL Server 2008