在searchform中将字段留空

时间:2013-03-12 23:32:06

标签: php mysql

我有一个搜索表单,您可以在其中搜索属性。现在它只有在你填写所有字段时才有效。但是,如果我想将一个字段留空并只搜索其余字段,或者只搜索一个字段并将其余字段留空,我该怎么办?

这是我今天查询的代码:

$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()); 

提前致谢!

也许您应该注意所有字段都是选择字段,而不是文本字段。

1 个答案:

答案 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运算。