我正在尝试为while循环的每个实例计数。到目前为止,我所能找到的就是如何保持计数器运行。例如,
$counter = 0;
while(..) {
$counter++; // or $counter = $counter + 1;
}
echo $counter;
我想要的是每次while循环运行时更要计算记录数,所以更像这样。
while ($row = mysqli_fetch_assoc($result)) {
$date = $row['date'];
$sql = "SELECT COUNT(*) FROM table WHERE date = $date ";
$r = mysqli_query($mysqli, $sql);
$count = mysqli_num_rows($r);
echo "There are ".$count." records for ."$date.".";
}
这可能吗?
答案 0 :(得分:3)
您最好改变一下外部SQL以一口气完成计数...
SELECT date, COUNT(*) as countForDate
FROM table
GROUP BY date
(加上您可能拥有的其他WHERE子句)。
答案 1 :(得分:1)
循环查询数据库始终是一个坏习惯。
如果我很好理解,您正在尝试通过一个查询获取日期,然后使用另一个查询按日期选择行。
如果无法使用JOIN组合此查询,则可以收集日期数组,内推并将其与IN和GROUP BY语句一起使用。
$dates = [];
while ($row = mysqli_fetch_assoc($result)) {
$dates[] = $row['date'];
}
$in = implode("','");
$sql = "SELECT date, COUNT(*) as date_count FROM table WHERE date IN ('".$in."') GROUP BY date";
while ($row = mysqli_fetch_assoc($result)) {
echo "There are ".$row['date_count']." records for ".$row['date'].".";
}
所以现在您只有两个查询,而不是很多