-1

プロパティを検索できる検索フォームがあります。現在、すべてのフィールドに入力した場合にのみ機能します。しかし、たとえば、フィールドを空白のままにして残りを検索したり、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);
// ...

クエリを作成するにはいくつかの方法がありますが、これは基本的に項目の配列を作成し、それらを AND 結合して最終的なクエリにします。

于 2013-03-12T23:51:14.903 に答える