Php 如何在for循环中获取给定月份所有天的记录总数

Php 如何在for循环中获取给定月份所有天的记录总数,php,mysql,sql,date,Php,Mysql,Sql,Date,如何在for循环中获取给定月份所有天的记录总数,即 假设在31天的一个月内,我希望我的结果是 2 0 0 5 0 4 0 0 0 1 3 0 8 0 76 0 7 6 0 0 4 0 0 7 0 0 55 0 7 这就是我尝试过的 for( $day = 1 ; $day <= $totaldays ; $day++ ) { $result = mysqli_query($link,"SELECT count(*) FROM tablex WHERE DAY(date_c) = '$d

如何在for循环中获取给定月份所有天的记录总数,即

假设在31天的一个月内,我希望我的结果是

2 0 0 5 0 4 0 0 0 1 3 0 8 0 76 0 7 6 0 0 4 0 0 7 0 0 55 0 7

这就是我尝试过的

for( $day = 1 ; $day <= $totaldays ; $day++ ) 
{
$result = mysqli_query($link,"SELECT  count(*) FROM tablex WHERE DAY(date_c) = '$day'") or die(mysqli_error($link));
$row = mysqli_fetch_array($result, MYSQLI_NUM);     
$values[$row[0]] = (int)$row[1];

echo $values[$row[0]]; 
}
因为我得到的结果是

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

我的数据库中的日期格式为时间戳,即2017-07-02 00:00:28

我还尝试添加$dtb=date(“Y-m-$days”)在for循环中,并将其添加到SQL。其中DAY(date_c)=“$dtb”)但仍然没有得到任何值


另外,mysql查询中的日(date_c)的实际格式是什么?

您的代码要求结果集中有两列。请执行以下操作之一:

 $values[i] = (int)$row[0];
或者返回日期和值:

SELECT $day as dy, count(*) FROM tablex WHERE DAY(date_c) = '$day'

您的代码在结果集中需要两列。请执行以下操作之一:

 $values[i] = (int)$row[0];
或者返回日期和值:

SELECT $day as dy, count(*) FROM tablex WHERE DAY(date_c) = '$day'

首先,尝试删除$day左右的
。当您使用$day左右的
时,请求尝试匹配day(date\u c)=“1”,而不是day(date\u c)=1

您的线路应该如下所示:
$result=mysqli\u query($link),从表x中选择count(*),其中DAY(date\u c)=$DAY)或die(mysqli\u error($link));

一般来说,在循环中触发SQL请求并不是最好的方法,这会很慢,而且在需要更大范围的数据(比如一年)或会带来其他问题时会更慢。 根据你的桌子设计,你可以做一些类似的事情

SELECT DAY(date_c) AS day_num, count(*) AS day_record
FROM tablex 
GROUP BY DAY(date_c)
ORDER BY DAY(date_c)

然后,您可以在一个请求中获得所有结果。您需要迭代结果并将其打印出来,这比在PHP中调用31倍的DB要快得多。

首先,尝试删除$day左右的
。当您在$day左右使用
时,请求尝试匹配day(date\u c)=1,而不是day(date c)=1

您的线路应该如下所示:
$result=mysqli\u query($link),从表x中选择count(*),其中DAY(date\u c)=$DAY)或die(mysqli\u error($link));

一般来说,在循环中触发SQL请求并不是最好的方法,这会很慢,而且在需要更大范围的数据(比如一年)或会带来其他问题时会更慢。 根据你的桌子设计,你可以做一些类似的事情

SELECT DAY(date_c) AS day_num, count(*) AS day_record
FROM tablex 
GROUP BY DAY(date_c)
ORDER BY DAY(date_c)

然后在一个请求中得到所有结果。您需要迭代结果并打印它,这比在PHP中调用31倍的DB要快得多。

为什么不使用group by?@ZoharPeled我想在图形中使用结果,所以我还需要零(0)如果那天没有计数的值那么?左键连接到一个日历表。我不是MySql的家伙,所以我不能给你确切的答案,但逻辑仍然是一样的-创建一个日历表,左键连接到你的数据表,然后你会得到0个缺少天数的计数。为什么不使用group by?@ZoharPeled我想在g中使用结果所以我也需要零(0)如果那天没有计数的值那么?左键连接到一个日历表。我不是MySql的家伙,所以我不能给你确切的答案,但逻辑仍然是一样的-创建一个日历表,使用它与数据表左键连接,然后你会得到0个缺少天数的计数。看起来很有趣,让我给它一个简单的例子try@gordon-林诺夫也是国际扶轮社长嗯,我没有识别出
$row[1]
错误:)。SQL结果从0开始计数,就像大多数数组一样。在第二个解决方案中,由于您不鼓励循环,您从何处获得变量$day in where day(date_c)=$day。?抱歉,我的错误。您不再需要$day变量,也不需要循环。尝试在phpmyadmin或SQL workbench之类的工具中发送SQL请求以查看结果。这很好,但它跳过了零值,这也是所需结果的一部分。看起来很有趣,让我给它一个简单的例子try@gordon-linoff也是对的,我没认出
$row[1]
error:)。SQL结果从0开始计数,大多数数组也是如此。在第二个解决方案中,由于您不鼓励循环,您从何处获得变量$day in where day(date_c)=$day。?抱歉,我的错误。您不再需要$day变量,也不需要循环。尝试在phpmyadmin或SQL workbench之类的工具中发送SQL请求以查看结果。这很好,但它跳过了零值,这也是所需结果的一部分