-4

3 つのドロップダウン リストを含むフィルターがあり、各リストには同じ基準 (オペレーター、サービス、SIM カード) が含まれています。これらのドロップダウン リストに異なる検索カテゴリが含まれている場合、検索機能は正常に機能しますが、カテゴリが 2 つまたは 3 つのドロップダウン リストで同じである場合、フィルタは正しく機能しません。SQL クエリが正しくないため:

"SELECT * FROM table WHERE id = " . $_GET['id'] . " AND operator like %tele% AND operator like %bite%"

する必要があります

"SELECT * FROM table WHERE id = " . $_GET['id'] . " AND operator like %tele% OR operator like %bite%"

これはフィルター用の私のphpコードです:

 $this->_sql['where'].= $this->reg['post']['flt_find_1'] ? " AND ".$this->reg['post']['flt_field_1']." like '%".$this->reg['post']['flt_find_1']."%' " : "";      
 $this->_sql['where'].= $this->reg['post']['flt_find_2'] ? " AND ".$this->reg['post']['flt_field_2']." like '%".$this->reg['post']['flt_find_2']."%' " : "";  
 $this->_sql['where'].= $this->reg['post']['flt_find_3'] ? " AND ".$this->reg['post']['flt_field_3']." like '%".$this->reg['post']['flt_find_3']."%' " : "";  

フィルター内のすべてのカテゴリが異なるかどうかを確認し、ANDそれぞれに使用しますが、カテゴリは同じですOR(または、それを解決する他の方法があるかもしれません)。

ありがとう。

4

1 に答える 1

0
  1. あなたのコードは sql インジェクションに対して脆弱なので、get パラメータを確認してください。
  2. 私があなたを正しく理解している場合は、次のようにしてみてください。
SELECT * FROM table WHERE id = '".($_GET['id']*1)."' AND ( operator LIKE '%tele%' AND operator LIKE '%bite%' )";
于 2013-03-13T14:20:19.390 に答える