好吧,我已尽力找到这样的线程,但到目前为止运气不佳,需要一些帮助来制作我的 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/