我对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。
发布于 2017-09-18 01:59:52
您可以尝试使用时间戳:
<?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'];
?>;发布于 2017-09-18 02:03:34
如果您想要一个具有每天结果的表,则需要修改SQL查询,以返回一个表,该表包含每天的日期和计数。为此,请将日期作为另一列,并按日将结果分组。
<?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";
}
?>https://stackoverflow.com/questions/46270505
复制相似问题