[英]Displaying number of records for each day in a month in a for loop to display the days of the month
[英]How do i get total number of records for all days of a given month inside a for loop
如何在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 0 7 0 0 55 0 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]];
}
我的SQL查询可能出什么问题了?
$result = mysqli_query($link,"SELECT count(*) FROM tablex WHERE DAY(date_c) = '$day'") or die(mysqli_error($link));
由于我得到的结果是
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(“ Ym- $ days”); 在for循环内,并将其添加到SQL ..WHERE DAY(date_c)='$ dtb'“)..但仍然没有任何值。
另外,mysql查询中DAY(date_c)的实际格式是什么?
您的代码期望结果集中有两列。 要么做:
$values[i] = (int)$row[0];
或返回日期和值:
SELECT $day as dy, count(*) FROM tablex WHERE DAY(date_c) = '$day'
首先,尝试删除$ day附近的'
。 当您在$ day附近使用'
时,请求尝试匹配DAY(date_c)='1'而不是DAY(date_c)= 1。
您的行应如下所示: $result = mysqli_query($link,"SELECT count(*) FROM tablex WHERE DAY(date_c) = $day") or die(mysqli_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倍要快得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.