我已经得到了每个循环,这是从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,如上面所示。
可以通过重写查询来避免重复查询,该查询将获得每个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>)