如何检查查询是否返回无结果并使用其他查询?

时间:2013-08-05 01:17:14

标签: php mysql

如果今天等于保存在数据库中的日期,我正在使用此查询显示结果。

$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(结束)

这样做的好方法是什么?

谢谢。

1 个答案:

答案 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;