我还是SQL的新手,我已经设法使用查询获取了我想要的数据。我希望能够在一天中选择记录总和,然后我可以使用
从PHP访问它<?php
$sql = $pdo->prepare("select count(*) from `Visits` where
date(`Date`)=date(date_sub(now(),interval 1 day))");
$sql->execute();
$result = $sql->fetch(PDO::FETCH_ASSOC);
echo $result['count(*)'];
?>;
数据返回昨天的记录。问题是我希望能够在设定的天数(最后7天和最后30天)内完成此操作,并且认为多次重复上述代码并不可行。
任何有关调整查询以返回单个数组的帮助,我都可以获取所有这些值,这将非常有用!如果数组可以采用“前几天”的值并返回当天的记录数量,那将是理想的。
修改:我仍然需要它在没有记录的日子里返回0。
答案 0 :(得分:1)
您可以尝试使用时间戳:
<?php
$last_days = 7;
$sql = $pdo->prepare("select count(*) as count from `Visits` where
UNIX_TIMESTAMP(`Date`) < UNIX_TIMESTAMP() AND UNIX_TIMESTAMP(`Date`) > UNIX_TIMESTAMP() - 60 * 60 * 24 * $last_days");
$sql->execute();
$result = $sql->fetch(PDO::FETCH_ASSOC);
echo $result['count'];
?>;
答案 1 :(得分:1)
如果您想要一个包含每天结果的表,则需要修改SQL查询以返回每天都包含Day和Count的表。其中包括将日期作为另一列,并按日分组结果。
<?php
$last_days=7
$sql = $pdo->prepare("select count(*) as `count`,date(`Date`) as `day` from `Visits` where
date(`Date`) > date(date_sub(now(),interval ? day)) GROUP BY date(`Date`)");
$sql->execute(array($last_days));
while($result = $sql->fetch(PDO::FETCH_ASSOC)) {
echo $result['count']. " for day:" . $result['day']." <br>\n";
}
?>