【发布时间】:2017-08-06 17:11:47
【问题描述】:
如何在 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 0 0 0
我数据库中的日期格式是时间戳,即 2017-07-02 00:00:28
我还尝试在 for 循环中添加 $dtb = date("Y-m-$days"); 并将其添加到 SQL ..WHERE DAY(date_c) = '$dtb'").. 但我仍然没有得到任何值。
另外,mysql 查询中 DAY(date_c) 的实际格式是什么?
【问题讨论】:
-
为什么不使用 group by?
-
@ZoharPeled 我想在图表中使用结果,所以我还需要当天没有计数的零(0)值
-
所以?左连接到日历表。我不是 MySql 人,所以我不能给你确切的答案,但逻辑仍然相同 - 创建一个日历表,将它与你的数据表的左连接一起使用,然后你会得到 0 计数错过的日子。