繁体   English   中英

PHP MYSQL日期范围错过的日子

[英]PHP MYSQL date range missed days

在DB中,还有26天和31天,但没有更改为OK。 仅获得第三天,然后更改为“确定”。

我在此代码中哪里写错了?

码:

*$from   = date("Y-m-01"); 
$to     = date("Y-m-t"); // last day current month
$query  = "SELECT date FROM tbl_data WHERE date BETWEEN '$from' AND '$to' order by date DESC";
$result = mysqli_query($mysqli,$query);
while ($row  = mysqli_fetch_array($result, MYSQL_ASSOC))
{
    $date =  date_create_from_format('Y-m-d', $row['date']);
}
$cursor =  date_create_from_format('Y-m-d', $from);
$finish =  date_create_from_format('Y-m-d', $to);
while ($cursor != $date)
    {
        echo date_format($cursor,'Y-m-d') . "--- Missed <br>";
        date_modify($cursor, '+1 day'); 

            while($cursor == $date)
                {
                    echo date_format($date,'Y-m-d') . "--- OK <br>";
                    date_modify($cursor, '+1 day'); 
                }
            while($cursor > $finish)
                {
                    die();
                }   
}*

输出:

2016-07-01 ---错过了
2016-07-02 ---错过了
2016-07-03 ---好的
2016-07-04 ---错过
2016-07-05 ---错过
2016-07-06 ---错过了
2016-07-07 ---错过了
2016-07-08 ---错过了
2016-07-09 ---错过了
2016-07-10 ---错过了
2016-07-11 ---错过了
2016-07-12 ---错过了
2016-07-13 ---错过了
2016-07-14 ---错过了
2016-07-15 ---错过
2016-07-16 ---错过了
2016-07-17 ---错过了
2016-07-18 ---错过了
2016-07-19 ---错过了
2016-07-20 ---错过了
2016-07-21 ---错过了
2016-07-22 ---错过
2016-07-23 ---错过了
2016-07-24 ---错过了
2016-07-25 ---错过了
2016-07-26 ---错过了
2016-07-27 ---错过了
2016-07-28 ---错过了
2016-07-29 ---错过了
2016-07-30 ---错过了
2016-07-31 ---失踪

您的问题很难理解,但据我所知,您正在尝试检查是否有重复日期的记录。

您错过的要点是,您只在$date变量中存储单个日期。 澄清;

while ($row  = mysqli_fetch_array($result, MYSQL_ASSOC))
{
    $date =  date_create_from_format('Y-m-d', $row['date']);
}

/* at this point of code, your variable $date is exactly equal to 2016-07-03
* because you sorted all existing dates in descending order and last record is 2016-07-03
*/

在此代码部分之后,您的“确定”检查仅对“ 2016-07-03”有效。 要更正代码,您应该具有存储所有天数的数组,并使用in_array()函数检查是否存在。

另一种选择是在更改ORDER BY方向后在while循环内应用这些过程。 如果两个连续的记录不是连续的天,则将填补这些间隔(第二级)迭代。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM