我有一个搜索表单,您可以在其中搜索属性。现在它只有在你填写所有字段时才有效。但是,如果我想将一个字段留空并只搜索其余字段,或者只搜索一个字段并将其余字段留空,我该怎么办?
这是我今天查询的代码:
$sql = mysql_query("
SELECT *
FROM property
WHERE (rooms LIKE '%$room%' OR '$room' = '')
AND (status LIKE '%$status%' OR '$status' = '')
AND (type LIKE '%$type%' OR '$type' = '')
AND (adress LIKE '%$county%' OR '$county' = '')
AND (area LIKE '%$area%' OR '$area' = '')
AND (price BETWEEN '$min' AND '$max')
") or die(mysql_error());
提前致谢!
也许您应该注意所有字段都是选择字段,而不是文本字段。
答案 0 :(得分:3)
我通常做这样的事情的方法是只将项添加到实际具有值集的WHERE子句中:
$sql_stmt = 'SELECT * FROM property';
$where_items = array();
if ($room != '') {
$where_items[] = "(rooms LIKE '%$room') ";
}
if ($status != '') {
$where_items[] = "(status LIKE '%$status') ";
}
// ... repeat for all optional variables ...
if (count($where_items) > 0) {
$sql_stmt .= ' WHERE ' . implode(' AND ', $where_items);
}
$result = mysql_query($sql_stmt);
// ...
有几种方法可以构建查询,但是这个方法基本上会创建一个项目数组,这些项目将与最终查询一起进行AND运算。