我收到了以下代码:
$query = $db->prepare("SELECT views FROM restaurant_views
WHERE (restaurant_id=:rest_id) AND (date=:date) LIMIT 1");
for($i = 11; $i > -1; $i--){
$query->bindParam(":rest_id", $_SESSION['restaurant_id']);
$query->bindParam(":date", date('Y-m-d', strtotime("-{$i} days")));
$query->execute();
$row = $query->fetch(PDO::FETCH_ASSOC);
echo $i . ' - ' . $row['views'].'<br>';
}
输出是这样的:
这是应该的,但我想删除此循环,并能够一次性检索所有日期的视图。请记住,如果餐厅一天没有任何意见,那么该行不存在。 (在第一个视图上创建行),因此输出不会是12行。 必须是12行,非常重要!
答案 0 :(得分:1)
如果你想要12行,那么添加一个&#34;表&#34;在查询中获取十二行:
SELECT n.n, rv.views
FROM (select 0 as n union all select 1 union all select 2 union all select 3 union all
select 4 union all select 5 union all select 6 union all select 7 union all
select 8 union all select 9 union all select 10 union all select 11 union all select 12
) n left join
restaurant_views rv
on rv.date = date_sub(curdate(), interval n.n day) and
restaurant_id=:rest_id ;
我不确定limit
条款的作用。 restaurant_views
中的一家餐馆在任何一天都有多行吗?