如何使用mySQL查询循环返回数组

时间:2017-09-18 01:45:56

标签: php mysql arrays pdo

我还是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。

2 个答案:

答案 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";
    }
    ?>