【问题标题】:PHP For Loop through date range not workingPHP For循环遍历日期范围不起作用
【发布时间】:2012-09-21 10:13:37
【问题描述】:

我正在尝试遍历一个月中的每一天,并获取一个月内每一天的结果数。

我做了以下事情;

<?php
include 'inclues/db.inc.php';

for($i = 2; $i < 30; $i++){
    $date2 = $i-1;
    $date1 = $i;

    $q = mysql_query("SELECT * FROM `table` WHERE `date` < '2012-09-".$date1." 00:00:00' AND `date` > '2012-09-".$date2." 00:00:00'";
    //$r = mysql_fetch_assoc($q);
    echo mysql_num_rows($q)."<br />";
}

?>

如果我只是尝试回显日期 1 和 2,但如果我使用查询则不会。使用查询时,我最终会出现 500 内部服务器错误。

关于如何解决这个问题的任何想法?在循环中使用查询通常是不好的做法吗?

【问题讨论】:

  • 您在 mysql_query 行的末尾缺少 )
  • 我需要更改我的设置以显示错误,而不是给我一个 500 内部服务器错误。我试试看!

标签: php mysql for-loop


【解决方案1】:

直接执行

SELECT date, COUNT(*) from table group by date

【讨论】:

  • 好吧,你可能需要在日期上做一些 date_trunc 。我更习惯使用 Postgresql,但是类似的功能也存在于 mysql 中
  • @user410932 我认为您无需再做任何事情 - Gedrox 的查询将完成您正在做的事情,而无需所有额外的 php
【解决方案2】:
SELECT * FROM `table` WHERE `date` BETWEEN $date1 AND $date2;

【讨论】:

    【解决方案3】:

    在循环中使用查询并不是一个坏习惯。

    检查您的查询字符串正在变成什么,尝试在您的数据库上手动运行该查询。它可能会产生一些错误。

     $sql = "SELECT * FROM `table` WHERE `date` < '2012-09-".$date1." 00:00:00' AND `date` >      '2012-09-".$date2." 00:00:00'";
     echo $sql;
     $q = mysql_query($sql);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-17
      • 2011-05-19
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      • 2011-02-19
      • 2020-03-06
      • 1970-01-01
      相关资源
      最近更新 更多