首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每个循环在PHP中重复两次日期

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

Stack Overflow用户
提问于 2014-05-10 23:49:14
回答 1查看 499关注 0票数 0

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

代码语言:javascript
复制
echo $oneweeksbefore = date("d/m/Y", strtotime('-1 weeks'));

在以下方面的成果:

代码语言:javascript
复制
04/05/2014 04/05/2014

由于日期不准确,我很难按下面的方式比较日期。

代码语言:javascript
复制
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,如上面所示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-11 00:43:35

可以通过重写查询避免重复查询,该查询将为每个end_date获得最新的student_id:

代码语言:javascript
复制
SELECT 
    id, 
    MAX(end_date) as max_end_date 
FROM 
    thetable 
GROUP BY 
    id 
WHERE 
    id IN (<outer query goes here>)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23587511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档