1

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);
}

?>

最初のクエリである単純な選択は問題なく機能します。ただし、結合 (2 番目のコメント付きクエリ) を実行しようとすると、0 レコードを受け取ります。Access 内の SQL エディターで SQL を正常に実行できたので、SQL が正しく、そこで結合が機能していることがわかります。誰もこれを経験したことがありますか?Linux がプロプライエタリな Microsoft 製品と互換性を持つように作られていないことは知っていますが、残念ながら、Ubuntu で Access データベースを読み取れるようにする必要があります。どんな助けでも大歓迎です。

4

2 に答える 2

4

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 には、Linux から見える限り、mdb/accdb ファイルへの直接アクセスに使用できる MS Access ODBC ドライバーもあります。

Openlink の商用 ODBC ブリッジは他にもあります。

于 2012-04-10T14:47:29.183 に答える
0

誰かがハッキーな解決策を探している場合、mdb-tools を使用してアクセス データベースを csv ファイル (テーブルごとに 1 つ) に変換し、csv を反復処理して「手動」結合を実行しました。最善の解決策ではありませんが、かなり小さなテーブルでうまくいきました。それが役に立てば幸い!

于 2014-06-10T16:52:48.353 に答える