2013-03-14 58 views
0

我主持的bluehost.com(Linux服务器),我有我有导出一些特定的数据导出到MS Access文件使用情况的网站,连接MS Access数据库在Linux下用PHP

我有以下代码与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] [驱动程序管理器]数据源名称未找到,没有指定默认驱动程序

稍后某些搜索我改变了数据库连接的代码

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语句。

+0

由于错误消息提示您缺少该类型数据库的驱动程序 – 2013-03-14 12:05:10

+0

您的主机没有安装名为“Microsoft Access Driver(* .mdb)”的ODBC驱动程序。如果他们实际提供这种服务,他们应该有正确的驱动程序名称的文档。 – 2013-03-14 12:06:11

+0

但是当我使用odbc_connect我没有得到任何错误,假设我做错了什么, – shary 2013-03-14 12:21:46

回答

1

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

  1. ODBC连接。
  2. 错误。

您的代码应查找FALSE,而不是例外。

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

+0

是的,我认为,我试图从jdbc,但没有成功,将尝试改变我们的计划,并获得root访问安装基于Linux的ODBC驱动程序。 ... 感谢您的回复。 – shary 2013-03-14 18:24:14

+0

嗨,迈克,我只是打电话给蓝色主机支持,他们说我需要专用IP来使用ODBC驱动程序,他们已经将它安装在端口1433上的所有服务器上,它对您有什么意义吗?会感谢您的快速回复。因为我不知道我们在建立连接时指定了PORT。 – shary 2013-03-15 17:59:26

+0

是的,那*是有道理的。 ODBC驱动程序需要知道如何查找目标数据库。在Bluehost上,数据库服务器可能与Web服务器不同。他们可能希望能够灵活地创建一个新的(可能是虚拟的)数据库服务器,更改IP地址,并让所有工作都正常工作。我很确定有技术可以在没有人为干预的情况下实现。但这并不意味着它有一个开源版本。如果遇到问题,请查看http://www.connectionstrings.com/ – 2013-03-15 19:44:42