0

私は php/mysql で多基準検索に取り組んでいます。この検索には 5 つのエントリがあります: - Type, Price Min - Price Max , Qty Min - Qty Max :

$Type = $_POST['Type'];
$Pmin = $_POST['Pmin'];
$Pmax = $_POST['Pmax'];
$Qtmin = $_POST['Qtmin'];
$Qtmax = $_POST['Qtmax'];
$query = "SELECT * FROM products where type_product='$Type' 
and price_min<='$Pmin' 
and price_max>='$Pmax'  
and qty_min<='$Qtmin' 
and qty_max>='$Qtmax' " ;

これは問題なく機能しますが、ユーザーはすべてのエントリを入力する必要があります。そして、私の考えでは、ユーザーは Type のみ、または Type と Price、または Qty のみを入力できます.. OR 句を使用しようとしましたが、うまく機能しませんでした。

4

2 に答える 2

5

クエリをパーツに分割します。このような場合には、クエリ アセンブリ クラスを使用する方が簡単です。もちろんPDOも。

$query->select('columns from MyTable')
 ->where('deleted = 0');


if (condition) {
  $query->where('field = ?', $value);
}

if (condition) {
  $query->where('field != ?', $value);
}

$results = $query->execute();
于 2012-06-04T15:08:46.150 に答える
1
where 
    (a =  '$a' or '$a' = '')
and (b <= '$b' or '$b' = '')
and (c >= '$c' or '$c' = '')

変数が空の文字列の場合、その条件は常に満たされることに注意してください。

于 2012-06-04T15:11:14.583 に答える