LAMP(PHP)使用ODBC和MDBTools驱动程序访问Access数据库

时间:2012-04-10 13:30:04

标签: php ms-access odbc lamp mdbtools

有人可以告诉我,如果在Ubuntu上使用unixODBC驱动程序的PHP支持有限吗?我在Ubuntu 11.10上设置了一个基本的灯服务器,我正在尝试查询Access数据库。我已经安装了php5-odbc和MDB Tools。以下是一些示例代码:

<?php

$conn = odbc_connect('logindb','','');

if (!$conn) {
   echo "failed";
}

$sql = "SELECT * FROM class";
//$sql = "SELECT class.desc, event_classes.event_class_id FROM class inner join
//event_classes on class.class_id = event_classes.class_id";

$rs = odbc_exec($conn, $sql);

while ($d = odbc_fetch_array($rs)) {
    var_dump($d);
}

?>

第一个查询,简单选择,工作得很好。但是,在尝试执行连接(第二次注释查询)时,我收到0条记录。我能够在Access中的SQL编辑器中成功运行SQL,所以我知道我的SQL是正确的,并且连接正在那里工作。有没有人有这方面的经验?我知道Linux并不是与专有的Microsoft产品兼容,但不幸的是我必须在Ubuntu上阅读Access数据库。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

sourceforge上的mdbtools自2004年以来一直没有更新过。我看到有人把它放在github上,似乎做了一些小改动。它中的SQL支持从来没有那么好,它是只读的,我从经验尝试使用DBD :: ODBC在Perl下运行很多测试都失败了。我认为你将很难用它。

还有其他更可靠的方法可以从Linux访问MS Access数据库,但据我所知,这些都是商业广告。要从Linux访问MS Access数据库,我知道以下内容:

Easysoft有一个ODBC-ODBC Bridge(可用于使用MS Access ODBC驱动程序访问Windows机器上的MS Access DB),但它需要在Windows机器上安装服务。 Easysoft还有一个MS Access ODBC驱动程序,可以直接访问mdb / accdb文件,只要它在Linux上可见。

Openlink还有其他商业ODBC桥。

答案 1 :(得分:0)

如果有人正在寻找一个hacky解决方案,我最终使用mdb-tools将访问数据库转换为csv文件(每个表1个),然后迭代通过csv执行&#34;手册&#34 ;加入。不是最好的解决方案,但它最终适用于相当小的表。希望它有所帮助!