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 匹配的记录时才有效。如果只有一个匹配的行,我什么也得不到。我相信我应该以不同的方式处理数据渲染部分。似乎只有一条记录仍可用作数组。我只是对为什么 foreach 会忽略一行感到困惑。我应该如何以一种适用于正确匹配的一个或多个行的方式编写它?

谢谢

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 回答