【发布时间】:2014-05-27 13:21:01
【问题描述】:
我一直在想,我自己解决不了这个问题。
我有这个 mysql 表,其中包含网站访问者的统计信息
+-----------------------------+
+ date | visits +
+-----------------------------+
+ 2014-03-02 | 736 +
+ 2014-03-03 | 936 +
+ 2014-03-06 | 54 +
+-----------------------------+
我想回应一周的统计报告,但也显示表格中没有数据的天数。
输出应该是:
2014-03-01: 0
2014-03-02: 736
2014-03-03: 936
2014-03-04: 0
2014-03-05: 0
2014-03-06: 54
2014-03-07: 0
请注意,我知道如何使用此功能:
$first = '2014-03-01';
$last = '2014-03-07';
while (strtotime($first) <= strtotime($last)) {
$related10 = mysql_query("SELECT * FROM stats WHERE date >= '$first' and date <= '$last'");
$rows = mysql_fetch_array($related10);
$date = $rows['date'];
$visits = $rows['visits'];
echo ''.$date.': '.$visits.'';
$first = date("Y-m-d", strtotime("+1 day", strtotime($first)));
}
但是这个函数的问题是它为每个日期运行一个 sql 查询,并且对于较大的日期范围,它在加载页面时持续几分钟。
我想用一个 sql 查询来完成这项工作
应该是这样的
$related10 = mysql_query("SELECT * FROM stats WHERE fecha >= '$first' and fecha <= '$last'");
while($rows = mysql_fetch_array($related10)) {
//function to add the missing date data.
echo $output;
}
有人知道如何解决这个问题吗?
非常感谢您。
【问题讨论】:
标签: php mysql sql loops if-statement