【问题标题】:LAMP (PHP) accessing Access Database with ODBC with MDBTools DriverLAMP (PHP) 使用 MDBTools 驱动程序通过 ODBC 访问 Access 数据库
【发布时间】:2012-04-10 13:30:04
【问题描述】:

谁能告诉我在带有 PHP 的 Ubuntu 上使用 unixODBC 驱动程序是否存在有限的 SQL 支持?我已经在 Ubuntu 11.10 上设置了一个基本的灯服务器,我正在尝试查询一个 Access 数据库。我已经安装了 php5-odbc 和 MDB 工具。下面是一些示例代码:

<?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 数据库。非常感谢任何帮助。

【问题讨论】:

    标签: php ms-access odbc lamp mdbtools


    【解决方案1】:

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

    还有其他更可靠的方法可以从 Linux 访问 MS Access 数据库,但据我所知,它们都是商业性的。要从 Linux 访问 MS Access 数据库,我知道以下几点:

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

    还有其他来自 Openlink 的商业 ODBC 桥。

    【讨论】:

      【解决方案2】:

      如果有人碰巧在寻找一个 hacky 解决方案,我最终使用 mdb-tools 将 access 数据库转换为 csv 文件(每个表 1 个),然后遍历 csv 执行“手动”连接。不是最好的解决方案,但它最终适用于相当小的桌子。希望对您有所帮助!

      【讨论】:

        猜你喜欢
        • 2012-04-22
        • 2015-05-30
        • 2016-03-17
        • 1970-01-01
        • 1970-01-01
        • 2010-11-27
        • 1970-01-01
        • 1970-01-01
        • 2019-05-08
        相关资源
        最近更新 更多