【发布时间】:2015-05-27 23:38:58
【问题描述】:
有人要求我构建一个调度程序,以根据开始/结束日期在网站上显示特别优惠。其中一部分是如果有有效的报价,则有条件地显示指向该页面的链接。但我完全不知所措。
以下查询获取正确日期内的所有当前报价:
$now = date('Y-m-j');
$sql = "SELECT * FROM sample WHERE date_from <= '".$now."' AND date_to > '".$now."'";
我无法开发此查询以返回 TRUE/FALSE 值(现有导航结构需要该值 - 由另一位开发人员创建)。有一些帖子声明在现有查询上使用 EXISTS() 或 SELECT CASE WHEN EXISTS(),然后是 THEN/ELSE 作为输出。但经过数小时尝试破解此问题后,我只设法获得了错误。
我知道有可能解决这个问题,但我想从 SQL 查询本身返回一个布尔值。
【问题讨论】:
-
如果该查询返回 1 行或更多行,您想要 true 吗?
-
类似:SELECT COUNT(1) is_exists FROM sample WHERE date_from '".$now."
-
是的,Dagon,如果至少返回一行,就会有报价,所以“TRUE”显示导航。
-
以我为例: if ($row->is_exists > 0) { ...
-
太棒了,请参阅下面的答案。接近尾声时,我提到了 *_num_rows() php 函数。根据您的数据库,您可以请求查询返回的行数。那么就没有必要只做简单的额外逻辑 if( pg_num_rows($res) > 0 ) {stuff;}
标签: php mysql sql-server boolean