0

複数の選択ボックスを持つクエリを作成しようとしています。ユーザーはドロップダウン メニューから 1 つまたは複数の値を選択できますが、ユーザーが 2 つ以上の選択ボックスの値を選択しようとすると、ユーザーが 1 つの選択ボックスを選択した場合にのみ機能します。 where句を正しく表示できません。このコードを別の Web サイトで見ましたが、適切に選択できませんでした。理解または単純化に役立つ人がいる場合...

if ($office != '') {    
    $where = ($where == '') ? 'WHERE ' : 'AND ';
    $where .= "adpno = '$office'";
}

if ($sector!= '') { 
    $where = ($where == '') ? 'WHERE ' : 'AND ';
    $where .= "sector= '$sector'";
}

if ($subsector!= '') {  
    $where = ($where == '') ? 'WHERE ' : 'AND ';
    $where .= "subsector= '$subsector'";
}

mysql_query('SELECT * FROM sometable ' . $where);
4

3 に答える 3

1

ANDWHERE!の前後に必ずスペースを追加してください。

コードで複数の条件が使用されている場合、クエリはおそらく次のように作成されますSELECT * FROM sometable WHERE subsector=3AND sector=5( の前にスペースがないことに注意してくださいAND)。

コード サンプルでは、​​ の後にのみスペースがありますAND/WHERE。MySQL はクエリ内の空白を無視することに注意してください。クエリのすべての要素を区切るために、少なくとも 1 つのスペースがあることを確認してください。

編集:また、それぞれが上書きするのではなく、前の句にif連結されていることを確認してください。WHEREそう:

if ($office != '') {    
    $where .= ($where == '') ? ' WHERE ' : ' AND ';
    $where .= "adpno = '$office'";
}

if ($sector!= '') { 
    $where .= ($where == '') ? ' WHERE ' : ' AND ';
    $where .= "sector= '$sector'";
}

if ($subsector!= '') {  
    $where .= ($where == '') ? ' WHERE ' : ' AND ';
    $where .= "subsector= '$subsector'";
}

mysql_query('SELECT * FROM sometable ' . $where);
于 2013-09-10T10:02:31.153 に答える