-1

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

这是我今天查询的代码:

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

提前致谢!

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

4

1 回答 1

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);
// ...

有几种方法可以构建查询,但这种方法基本上是创建一个项目数组,这些项目将被“与”一起进入最终查询。

于 2013-03-12T23:51:14.903 回答