如果今天等于保存在数据库中的日期,我正在使用此查询显示结果。
$sh = $db->prepare('SELECT * FROM events WHERE DATE(:today) = DATE(`start`)');
$sh->bindValue(":today", $today);
$sh->execute();
while($row = $sh->fetch(PDO::FETCH_ASSOC)) {
here is my code when results are found
}
但是,如果没有结果,我想重复上面的代码,只将查询更改为此
SELECT * FROM events WHERE
城市= (:city) AND DATE(:start) Between DATE(
开始) and DATE(
结束)
这样做的好方法是什么?
谢谢。
答案 0 :(得分:0)
如果您想在一个查询中执行此操作,则可以执行以下操作:
SELECT *
FROM events
WHERE DATE(:today) = DATE(`start`)
union all
SELECT *
FROM events
WHERE city= (:city) AND DATE(:start) Between DATE(start) and DATE(end) and
not exists (SELECT * FROM events WHERE DATE(:today) = DATE(`start`));
编辑:
如果你想获得3行,按第一个查询排序,而不是第二个,那么这样做:
SELECT *
FROM events
WHERE DATE(:today) = DATE(`start`) or
(city= (:city) AND DATE(:start) Between DATE(start) and DATE(end))
order by DATE(:today) = DATE(`start`) desc, rand()
limit 3;