Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP在Linux中连接MS Access数据库_Php_Pdo_Odbc_Unixodbc - Fatal编程技术网

使用PHP在Linux中连接MS Access数据库

使用PHP在Linux中连接MS Access数据库,php,pdo,odbc,unixodbc,Php,Pdo,Odbc,Unixodbc,我的网站托管在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){ e

我的网站托管在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]SqlDriverConnection:未找到0[unixODBC][驱动程序管理器]数据源名称,并且未指定默认驱动程序

后来经过一些搜索,我把DB连接的代码改为

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,这两个代码段在我的本地Windows计算机上都工作正常

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

假设它返回两件事之一

  • ODBC连接
  • 错误为FALSE
  • 您的代码应该查找FALSE,而不是异常


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

    由于错误消息表明您缺少该类型数据库的驱动程序,您的主机没有安装名为“Microsoft Access驱动程序(*.mdb)”的ODBC驱动程序。如果他们真的提供这样的服务,他们应该在某个地方有正确的驱动程序名的文档。但是当我使用odbc_connect时,我没有得到任何错误,假设我做错了什么,是的,我想,我从jdbc尝试过,但没有成功,我会尝试改变我们的计划,并获得根访问权来安装基于Linux的odbc驱动程序。。。。谢谢你的回复。嗨,迈克,我刚刚打电话给Blue Host support,他们说我需要专用IP来使用ODBC驱动程序,他们已经在端口1433的所有服务器上安装了它,这对你有意义吗?非常感谢您的快速回复。因为我不知道在建立连接时我们在哪里指定端口。是的,这是有意义的。ODBC驱动程序需要知道如何找到目标数据库。在Bluehost上,数据库服务器可能与web服务器不同。他们可能希望能够灵活地启动一个新的(可能是虚拟的)数据库服务器,更改IP地址,让一切正常工作。我很确定有一种技术可以在没有人为干预的情况下实现这一点。但这并不意味着它有一个开源版本。如果你有麻烦,看看