每个循环在PHP中重复两次日期

时间:2014-05-10 23:49:14

标签: php mysql datetime foreach

我有一个for循环,它回显了mysql查询的结果。然后我在循环中有一个单独的查询来查找具有日期值的其他记录。 我需要比较日期来打印相关数据,但是在循环内部,日期回响两次,如下所示:

echo $oneweeksbefore = date("d/m/Y", strtotime('-1 weeks'));

结果:

04/05/2014 04/05/2014

由于日期不准确,我在比较日期时遇到了问题。

foreach($data as $row) {
    $student_id = $row['student_id'];
    $sql = "SELECT end_date FROM table WHERE id = :id ORDER BY end_date DESC LIMIT 1";
    $q = $conn->prepare($sql);
    $q->execute(array(':id' => $student_id));
    $table = $q->fetch();
    $end_date = date("d/m/Y", strtotime($table[0]));
    $todaydate = date("d/m/Y");
    if (($end_date > $oneweeksbefore) && ($end_date < $todaydate))
    {
        $show_end_date = '<span class="label label-warning">'.$end_date.'</span>';
    }
    else
    {
        $show_end_date = '<span class="label label-info">'.$end_date.'</span>';
    }
}

$ oneweekbefore变量在foreach循环之外。 我需要在循环内部进行查询,因为它需要从每行的第一个查询中获取student_id。我无法将其合并到一个查询中,因为您可以看到多个行需要限制为1。

1 个答案:

答案 0 :(得分:1)

重写的查询可以通过重写查询来避免,这将为每个student_id获取最新的end_date:

SELECT 
    id, 
    MAX(end_date) as max_end_date 
FROM 
    thetable 
GROUP BY 
    id 
WHERE 
    id IN (<outer query goes here>)