【发布时间】:2012-02-02 13:33:21
【问题描述】:
我有一个 SQL 查询,它输出 1000 个 sql 条目(有时少于 1000 个)。我希望第一个结果和最后一个结果是唯一的。
最好的方法是通过 IF 语句运行 1000 次,只是为了自定义第一行和最后一行?还是有更好的方法?
示例:
$sql=("SELECT * FROM `table` LIMIT 0, 1000");
$q = $conn->prepare($sql);
$q->execute($executearray);
$q->setFetchMode(PDO::FETCH_BOTH);
$i = 0;
$total = $q->rowCount();
while ($r = $q->fetch()){
$i++;
// first result
if ($i == 1) {
echo "<div>" . $r['id'] . "</div>";
echo "<div>" . $r['image'] . "</div>";
echo "<div>" . $r['text'] . "</div>";
// last result
} elseif ($i == $total) {
echo "<div>" . $r['somethingelse'] . "</div>";
// all other results
} else {
echo "<div>" . $r['image'] . "</div>";
echo "<div>" . $r['text'] . "</div>";
}
}
有没有办法做这样的事情...?
$sql=("SELECT * FROM `table` LIMIT 0, 1000");
$q = $conn->prepare($sql);
$q->execute($executearray);
$q->setFetchMode(PDO::FETCH_BOTH);
// first result
echo "<div>" . $r[0]['id'] . "</div>";
echo "<div>" . $r[0]['image'] . "</div>";
echo "<div>" . $r[0]['text'] . "</div>";
// results 2-999
while ($i <= $total - 1) {
echo "<div>" . $r['somethingelse'] . "</div>";
}
// last result
echo "<div>" . $r[$total]['image'] . "</div>";
echo "<div>" . $r[$total]['text'] . "</div>";
【问题讨论】:
-
$i++在循环的开头? -
@webarto:这有什么问题?
-
您已将问题从简单的颜色更改更改为全新的输出。如果你想要的改变与你正在做的完全不同,那没关系。
-
@Madmartigan 如果你在循环中有中断/继续,你想知道实际执行了多少次迭代。
-
@webarto,如果您跳出循环并想知道您正在处理的项目怎么办?