php - 如果搜索为空,如何显示所有结果

标签 php mysql sql

我在下面的代码中尝试按国家/地区搜索。在主页上有一个下拉框可以从中选择国家/地区。我的问题是它显示了所选国家/地区的结果,但如果未选择任何内容,则没有结果。

如果没有选择,我希望它显示ALL Country 结果。

如果 country_select 为空,则在 mysql 搜索中使用此代码,则结果为零:

and bam.country='".mysql_real_escape_string(trim($_POST['country_select']))."'

完整代码如下:

$searchsql = "SELECT pp_id, appmt_id, price, max( stay_from )
                        FROM (
                        SELECT bp.pp_id, bam.appmt_id, bam.appmt_name, bp.price, bp.stay_from
                        FROM bsi_apartment_master AS bam, bsi_appmt_features AS baf, bsi_priceplan AS bp
                        WHERE bam.status=true and baf.appmt_id = bam.appmt_id".$addquery." AND baf.bedroom >=".$this->bedroom." AND baf.bathroom >=".$this->bathroom."
                        and bam.country='".mysql_real_escape_string(trim($_POST['country_select']))."'
                        AND bam.appmt_id NOT IN (SELECT appmt_id FROM bsi_bookings WHERE is_deleted = FALSE AND (( '".$this->mysqlCheckInDate."'
                        BETWEEN checkin_date AND checkin_date AND DATE_SUB(checkout_date, INTERVAL 1 DAY) )
                        OR ( DATE_SUB('".$this->mysqlCheckOutDate."', INTERVAL 1 DAY) BETWEEN checkin_date AND checkin_date AND DATE_SUB(checkout_date, INTERVAL 1 DAY) )
                        OR ( checkin_date BETWEEN '".$this->mysqlCheckInDate."' AND DATE_SUB('".$this->mysqlCheckOutDate."', INTERVAL 1 DAY) )
                        OR ( checkin_date AND DATE_SUB(checkout_date, INTERVAL 1 DAY) BETWEEN '".$this->mysqlCheckInDate."' AND DATE_SUB('".$this->mysqlCheckOutDate."', INTERVAL 1 DAY) )))
                        AND bam.appmt_id = bp.appmt_id
                        AND if( ( ".$staycount." NOT BETWEEN bp.stay_from AND bp.stay_to ) = true, 
                        ( ".$staycount." NOT BETWEEN bp.stay_from AND bp.stay_to ) AND bp.default_pp !=0, 
                        ( ".$staycount." BETWEEN bp.stay_from AND bp.stay_to ) )
                        order by bp.stay_from desc
                        ) AS t1
                        GROUP BY appmt_id
                        order by price ".$this->sorting;

最佳答案

$searchsql = "SELECT pp_id, appmt_id, price, max( stay_from )
                    FROM (
                    SELECT bp.pp_id, bam.appmt_id, bam.appmt_name, bp.price, bp.stay_from
                    FROM bsi_apartment_master AS bam, bsi_appmt_features AS baf, bsi_priceplan AS bp
                    WHERE bam.status=true and baf.appmt_id = bam.appmt_id".$addquery." AND baf.bedroom >=".$this->bedroom." AND baf.bathroom >=".$this->bathroom;

  if(!empty($_POST['country_select']))
  {
     $searchsql .=" and bam.country='".mysql_real_escape_string(trim($_POST['country_select']))."'";
   }
                    $searchsql.="AND bam.appmt_id NOT IN (SELECT appmt_id FROM bsi_bookings WHERE is_deleted = FALSE AND (( '".$this->mysqlCheckInDate."'
                    BETWEEN checkin_date AND checkin_date AND DATE_SUB(checkout_date, INTERVAL 1 DAY) )
                    OR ( DATE_SUB('".$this->mysqlCheckOutDate."', INTERVAL 1 DAY) BETWEEN checkin_date AND checkin_date AND DATE_SUB(checkout_date, INTERVAL 1 DAY) )
                    OR ( checkin_date BETWEEN '".$this->mysqlCheckInDate."' AND DATE_SUB('".$this->mysqlCheckOutDate."', INTERVAL 1 DAY) )
                    OR ( checkin_date AND DATE_SUB(checkout_date, INTERVAL 1 DAY) BETWEEN '".$this->mysqlCheckInDate."' AND DATE_SUB('".$this->mysqlCheckOutDate."', INTERVAL 1 DAY) )))
                    AND bam.appmt_id = bp.appmt_id
                    AND if( ( ".$staycount." NOT BETWEEN bp.stay_from AND bp.stay_to ) = true, 
                    ( ".$staycount." NOT BETWEEN bp.stay_from AND bp.stay_to ) AND bp.default_pp !=0, 
                    ( ".$staycount." BETWEEN bp.stay_from AND bp.stay_to ) )
                    order by bp.stay_from desc
                    ) AS t1
                    GROUP BY appmt_id
                    order by price ".$this->sorting;

关于php - 如果搜索为空,如何显示所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22589080/

相关文章:

PHP fwrite() 期望参数 1 是资源,给定 bool 值

php - php while循环中的动态rowspan

c# - 由于派生表, Entity Framework 很慢

SQL 将值更改为大写或小写

SQL插入错误

c# - 从VisualStudio生成的数据库资料到程序员生成的资料

javascript - Highcharts - 动态获取可见系列名称

php 将数组拆分为更小的偶数数组

javascript - 如何从注册页面进入预览页面并从预览页面返回注册页面进行修改

java - 无法将 SB 配置为使用 MySQL 托管的 BATCH_* 表