【问题标题】:Connect MS Access DB In Linux Using PHP使用 PHP 在 Linux 中连接 MS Access DB
【发布时间】:2013-03-14 12:03:25
【问题描述】:

我的网站托管在 bluehost.com(Linux 服务器)上,我有一个用例,我必须将一些特定的数据导出到 MS Access 文件,

我有以下代码来连接 MS Access 文件:

$dbh = null;    
try{
  $dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=$file_path", $user_name, $password, $db_info);
}catch(PDOException $e){
  echo $e->getMessage();      
}   
return $dbh;

但是当我在托管服务器上运行上述代码时,我得到了错误 SQLSTATE[IM002] SQLDriverConnect: 0 [unixODBC][Driver Manager]未找到数据源名称,且未指定默认驱动程序

后来经过一番搜索,我将数据库连接的代码更改为

try{
  $conn = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$file_path", ACCESS_DB_USERNAME, ACCESS_DB_PASSWORD);
}catch(Exception $ex){
  echo $ex->getMessage();
}

在上面的代码中我没有得到任何异常,但 $conn 为 NULL,两个代码 sn-p 在我的本地 Windows 机器上都可以正常工作,

你们能帮我解决问题吗?我想建立连接并想在 MS Access DB 上运行 INSERT INTO 语句。

【问题讨论】:

  • 因为错误消息表明您缺少该类型数据库的驱动程序
  • 您的主机没有安装名为“Microsoft Access Driver (*.mdb)”的 ODBC 驱动程序。如果他们真的提供这样的服务,他们应该在某个地方有正确的驱动程序名称的文档。
  • 但是当我使用 odbc_connect 时我没有收到任何错误,假设我做错了什么,

标签: php pdo odbc unixodbc


【解决方案1】:

docs for odbc_connect 说它返回两件事之一。

  1. ODBC 连接。
  2. 错误时为 FALSE。

您的代码应该查找 FALSE,而不是异常。

文档还提供了几种不同类型连接的示例。但我认为 Bluehost 在他们所有的 Linux 服务器上安装 Microsoft Access 驱动程序的机会小于零。

【讨论】:

  • 是的,我想,我从 jdbc 尝试过,但没有成功,将尝试更改我们的计划并获得 root 访问权限以安装基于 Linux 的 ODBC 驱动程序....谢谢您的回复。
  • 嗨,迈克,我刚刚打电话给 Blue Host 支持,他们说我需要专用 IP 才能使用 ODBC 驱动程序,他们已将其安装在端口 1433 上的所有服务器上,这对您有什么意义?将感谢您的快速响应。因为我不知道在建立连接时我们在哪里指定端口。
  • 是的,那种是有道理的。 ODBC 驱动程序需要知道如何找到目标数据库。在 Bluehost 上,数据库服务器可能与 Web 服务器是不同的机器。他们可能希望能够灵活地启动一个新的(可能是虚拟的)数据库服务器,更改 IP 地址,让一切正常工作。我很确定有技术可以在没有人为干预的情况下实现这一点。不过,这并不意味着它有开源版本。有问题可以看connectionstrings.com
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多