3

phpodbc_connectとodbc_execを使用してアクセスMDBファイルをクエリしようとしています。アイデアは、jsonに変換できる配列を返すことです。

Ubuntu12.10でapache2を介してphpを実行しています

これが私のコードです:

//Connect to the database
$conn=odbc_connect('stock-test','','');

//die if error
if (!$conn) {
    die("Connection Failed: " . $conn);
} 
//SQL query
$sql = "SELECT * FROM Stk_Items";

//This is the print command...see notes below for this
//print " "

//Execute SQL query
$rs=odbc_exec($conn,$sql);

//If no result, there is an error in the SQL
if (!$rs) {
    exit("Error in SQL");
}

//Create an array to contain the results...
$arr = array();

//Loop through the results, pushing each array to the $arr array
while ($row = odbc_fetch_array($rs)) {
    array_push($arr, $row);
}

print json_encode( $arr);


odbc_close($conn);

今ここに奇妙なことがあります。このコードは、odbc_execコマンドが発行される前に空白(または他の文字)を出力した場合にのみjsonを出力します(上記のコードでコマンドをコメントアウトしました)

他にもいくつかのテスト(結果のエコーなど)を実行しましたが、odbc_execコマンドの前に空白を出力しない限り機能しません。

明らかな何かが欠けていますか?

4

2 に答える 2

2

仮想マシンをセットアップし、最初から再インストールして、新しいビルドで問題が再び発生するかどうかを確認しました。そうではなかったので、ライブマシンでのApacheのビルドに問題があると私は信じました。過去数日間、リポジトリからApacheを削除して追加し、apt-getを使用してすべての最新の更新を追加しましたが、問題は解決したようです。最新の更新が通常適用されるため、非常にイライラしているため、何かが必要だと想像することしかできません。 apache2またはphp5-odbcの初期インストールで問題が発生しました。

于 2013-04-05T06:35:05.113 に答える
0

あなたが説明することは、私にはアパッチの癖のように聞こえます。Webブラウザを使用してPHPスクリプトをトリガーし、結果を検査している場合は、少なくとも<html><body>何よりも先に出力する必要があります。結果を適度に無秩序な形で見たい場合は、<pre>タグもエコーする必要があります。

FWIW、コマンドラインからコードをそのまま実行しましたが、問題なく動作しました。

編集:

以下のコメントに加えて、apache2が。を使用するPHPスクリプトを呼び出す場合、これは確かに奇妙に見えますodbc_exec()。テストするために、Ubuntu12.04LAMPサーバーで次の「ページ」を作成しました...

<?php
$arr = array(
    array('ID' => 1, 'text' => 'foo'), 
    array('ID' => 2, 'text' => 'bar'), 
    array('ID' => 3, 'text' => 'baz')
    );
print json_encode($arr);

...そしてFirefoxはJSON文字列を次のように表示します...

[{"ID":1、 "text": "foo"}、{"ID":2、 "text": "bar"}、{"ID":3、 "text": "baz"}]

...したがって、apache2はプレーンなJSON文字列を吐き出すのに問題はなく、Firefoxはそれを表示するのに問題はありません。

于 2013-03-27T09:40:57.410 に答える