Php 计数while循环的每个实例的记录

Php 计数while循环的每个实例的记录,php,mysql,Php,Mysql,我试图获得while循环的每个实例的计数。到目前为止,我所能找到的就是如何保持计数器运行,例如 $counter = 0; while(..) { $counter++; // or $counter = $counter + 1; } echo $counter; 我想要的是在每次while循环运行时计算更多的记录数,所以更像这样 while ($row = mysqli_fetch_assoc($result)) { $date = $row['date'];

我试图获得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.".";

}

这是可能的吗?

您最好更改外部SQL以一次性完成计数

SELECT date, COUNT(*) as countForDate
    FROM table
    GROUP BY date

(加上您可能拥有的任何其他WHERE子句)。

您可能最好更改外部SQL以一次性完成计数

SELECT date, COUNT(*) as countForDate
    FROM table
    GROUP BY date

(加上您可能有的任何其他WHERE子句)。

在一个周期中查询数据库总是一种不好的做法

如果我理解得很好,您将尝试通过一个查询获取日期,然后使用另一个查询按日期选择行

如果不能使用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'].".";
}

因此,现在您只有两个查询,而不是在一个周期中查询多个数据库,这通常是一种不好的做法

如果我理解得很好,您将尝试通过一个查询获取日期,然后使用另一个查询按日期选择行

如果不能使用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'].".";
}

因此,现在您只有两个问题,而不是许多问题

您能否澄清您希望在最后看到什么?在我看来,您需要将两个代码片段组合在一起
$count+=mysqli\u num\u rows($r)。。。记下
+
并将
回音移动到
之后,同时
。。。或者别的什么。不知道你的结局是什么。如果你把
$date
放在引号里,它可能会这样工作,也就是说
其中的'date`='$date'
,所以你有一个while循环,你想在循环中选择数据来计算它们吗?美元行里面是什么?难道你不能像
SELECT date,count(*)那样按日期从你的_表组中计数吗然后在您的while循环中执行
echo“有“$row['count']”记录,“$row['date']””
您能否澄清您希望在最后看到的内容?在我看来,您需要将两个代码片段组合在一起
$count+=mysqli\u num\u rows($r)。。。记下
+
并将
回音移动到
之后,同时
。。。或者别的什么。不知道你的结局是什么。如果你把
$date
放在引号里,它可能会这样工作,也就是说
其中的'date`='$date'
,所以你有一个while循环,你想在循环中选择数据来计算它们吗?美元行里面是什么?难道你不能像
SELECT date,count(*)那样按日期从你的_表组中计数吗
然后在while循环中执行
echo“有“$row['count']”记录,“$row['date']””
非常感谢您的帮助。这确实可以计算所有记录的总数。这将输出2018-09-2014年的4项记录。我试图在每次while循环运行时获取总计数。如果我有3条记录是在2018-09-14输入的,还有1条记录是在2018-09-21输入的。我试图得到这样的输出。2018-09-14有3项记录,2018-09-21共有1项记录,明白了。非常感谢你。这很有魅力。非常感谢你的帮助。这确实可以计算所有记录的总数。这将输出2018-09-2014年的4项记录。我试图在每次while循环运行时获取总计数。如果我有3条记录是在2018-09-14输入的,还有1条记录是在2018-09-21输入的。我试图得到这样的输出。2018-09-14有3项记录,2018-09-21共有1项记录,明白了。非常感谢你。这很有魅力。