php - MySQL选择问题: how to do a SELECT with any optional dropdowns?

标签 php mysql

好吧,我已尽力找到这样的线程,但到目前为止运气不佳,需要一些帮助来制作我的 SQL 查询。我正在从事一个房地产项目,并且有一个包含多个下拉列表的表单,如下所示:

   <select name="bed" id="bed">
     <option value="0">Any</option>    
        <option value="1">1 Bedroom</option>    
     <option value="2">2 Bedroom</option>    
     <option value="3">3 Bedroom</option>    
     <option value="4">4 Bedroom</option>    
     <option value="5">5 Bedroom</option>    
     <option value="6">6 Bedroom</option>    
    </select>

    <select name="bed" id="bed">
     <option value="0">Any</option>    
        <option value="1">1 Bedroom</option>    
     <option value="2">2 Bedroom</option>    
     <option value="3">3 Bedroom</option>    
     <option value="4">4 Bedroom</option>    
     <option value="5">5 Bedroom</option>    
     <option value="6">6 Bedroom</option>    
    </select>

如果用户想要搜索属性并选择“床”和“浴室”号码——例如,4 床/2 浴室——那么这很容易:

SELECT * FROM exp_channel_data WHERE field_id_4 = '<?= $search['bed'] ?>' AND field_id_5 = '<?= $search['bath'] ?>

(我在其中捕获了数组中的 POST 数据。)这按预期工作。

但如果用户选择床——比如,向我显示所有拥有 3 间卧室的属性但是有很多浴室——并让浴室下拉列表为空(或“任何”),那么我只需要一个像上面一样的 SELECT 语句,但在“WHERE”中没有“AND”。

所以我的问题是,如何检查 bath 下拉列表是否存在非零金额并根据 POST 数组更新 SELECT 语句?我怀疑这比我想象的要容易得多,我只是盯着看太久了……在此先感谢您为我指出正确的方向。

最佳答案

我会做类似的事情:

$query = "SELECT * FROM exp_channel_data WHERE 1 = 1 ";
if($search['bed']) $query .= "AND field_id_4 = ".$search['bed'].' ';
if($search['bath']) $query .= "AND field_id_5 = ".$search['bath'].' ';
$results = mysql_query($query);

关于php - MySQL选择问题: how to do a SELECT with any optional dropdowns?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4101562/

相关文章:

mysql - 同一查询中的 update 和 2 select 语句导致错误

sql - 帮助 MySQL 加入

php - 给出了mysql bool 值,但结果显示

php - wp-admin 显示空白页面,如何解决?

php - Laravel Eloquent Eager Loading 倍数有很多关系

php - 如果在其他表中找不到匹配记录,如何从一个表中选择记录

php - 从表单编写简短的 PHP 更新代码

java - 基于 Java/Spring 的 Web 服务的替代品

javascript - 表单提交后动态依赖下拉列表中没有选项

php - 每个表行都需要一个 ID 吗?