2

私はpg_fetch_all( postgresql) で奇妙な問題を抱えています:それは私に tan 2 列以上を返しません

たとえば、このコード:

    $dbh = pg_connect("host=localhost dbname=dbname user=user password=passwd");
    $query = "SELECT m.id, v.nom, v.id FROM machine m, version v WHERE m.id_version = v.id;";
    $result = pg_query($dbh, $query);
    $array = pg_fetch_all($result);
    print_r($array);

私だけを印刷しますm.idv.nom

まったく同じ SQL リクエストを pg_my_admin に貼り付けると、各列が返されます。

結果を次のように解析すると

    $array = array();
    while ($row = pg_fetch_row($result)) {
      $array[] = $row;
    }

それは完全に機能します。なんで ?

4

1 に答える 1

5

これは、(2 つの異なるテーブルに) 同じ名前の 2 つの列があるためです。次のようなエイリアスを使用する必要があります。

$query = "SELECT m.id AS mId, v.nom, v.id AS vId FROM machine m, version v WHERE m.id_version = v.id;";

m.id次に、名前mIdv.id名前を使用して列を取得できvId ます。SQL のエイリアスに関する詳細情報は、こちらを参照してください。

pg_fetch_row()で機能する理由は、これが連想配列としてではなく、クエリの列のインデックスに基づいて結果を返すためです。

于 2013-02-05T18:59:18.087 に答える