0

以下のコードを使用して、data_cases というテーブルから行を出力しています。

$query = 'SELECT * FROM mydb.data_cases 
WHERE id=123 ORDER BY log_date_time DESC';

$result = pg_query($query) or die("Failed".$query);

$line = pg_fetch_array($result, null, PGSQL_ASSOC);

while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
    echo "\t<tr>\n";
    foreach ($line as $col_value) {     
        echo "\t\t<td>".$col_valuez."</td>\n";        
}

上記のコードは、その ID に一致するレコードが複数ある場合にのみ機能します。一致する行が 1 つしかない場合は、何も得られません。どうにかして、データ レンダリング部分を別の方法で処理する必要があると思います。配列として機能するレコードは 1 つだけのようです。foreach が単一の行を無視する理由について、私は混乱しています。1 つ以上の行が適切に一致するようにするには、どのように記述すればよいですか?

ありがとう

4

2 に答える 2

2

次のコードは、while ループの前に余分な時間を追加しています。

$line = pg_fetch_array($result, null, PGSQL_ASSOC);

この行を削除すると、期待どおりに動作するはずです

于 2013-07-02T15:50:35.213 に答える
2

単一行の結果セットを消費しているため、「無視」しています。

$line = pg_fetch_array($result, null, PGSQL_ASSOC);

その行 (whileステートメントの前) は、何かを行う前に結果セットの最初の行を消費しています。

完全に削除するだけです。

于 2013-07-02T15:50:50.660 に答える