所以,通常我会循环遍历这样的数据库;
while($row = mysql_fetch_array($result)) {
// echoes here
}
这很好用。但是如果我想做点什么呢?
<h1><?= $row["category_name"]; ?></h1>
<p><?= $row["description"]; </p>
while($row = mysql_fetch_array($result)) {
// echoes here
}
这当然不起作用,因为mysql_fetch_array
低于第一个$row
。但是像这样的东西不起作用..(无限循环)。
$row = mysql_fetch_array($result);
<h1><?= $row["category_name"]; ?></h1>
<p><?= $row["description"]; </p>
while($row) {
// echoes here
}
解决此问题的最佳方法是什么?第一个回声的另一个数据库查询?
答案 0 :(得分:3)
第一个:停止使用mysql
,不推荐使用它。开始查看mysqli
或pdo
现在我猜你的所有行都包含category_name
的相同数据,这就是你想先打印它的原因。最简单的方法是,如果您处于while循环的第一次迭代中,请跟踪。
<?php
$counter = 0;
while ($row = mysql_fetch_array($result)) {
$counter++;
if ($counter==1) {
echo '<h1>'.$row['category_name'].'</h1><p>'.$row['description'].'</p>';
//now if your first row only contains this information and doesnt have any regular data, uncomment the continue line.
//continue;
}
//echoes the regular rows.
}
?>
这也可以扩展到检查类别名称是否实际更改。因此,您可以在更改标题时打印标题。
<?php
$header = "";
while ($row = mysql_fetch_array($result)) {
if ($header!=$row['category_name']) {
echo '<h1>'.$row['category_name'].'</h1><p>'.$row['description'].'</p>';
$header = $row['category_name'];
}
//echoes the regular rows.
}
?>
现在每次类别名称更改时,标题都将打印出描述。请注意,您的查询确实需要在category_name上设置ORDER BY
才能使其正常工作,否则您最终可能会遇到重复的标题。
答案 1 :(得分:2)
仅获取第一行,将指针移动到第二行,然后遍历结果。
$row = mysql_fetch_array($result);
<h1><?= $row["category_name"]; ?></h1>
<p><?= $row["description"]; </p>
mysql_data_seek($result,1);
while($row= mysql_fetch_array($result)) {
// echoes here
}