我正在使用以下代码从我的表中输出名为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会忽略一行而感到困惑。我应该如何以适合一行或多行匹配的方式编写它?
由于
答案 0 :(得分:2)
您在while循环之前添加了以下代码额外的时间
$line = pg_fetch_array($result, null, PGSQL_ASSOC);
删除此行,它应该按预期工作
答案 1 :(得分:2)
它正在“忽略”单行结果集,因为你正在使用它:
$line = pg_fetch_array($result, null, PGSQL_ASSOC);
该行(在while
语句之前)消耗结果集的第一行,然后再对其执行任何操作。
完全删除它。