计算while循环的每个实例的记录

时间:2018-10-04 15:50:30

标签: php mysql

我正在尝试为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.".";

}

这可能吗?

2 个答案:

答案 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'].".";
}

所以现在您只有两个查询,而不是很多