2012-06-04 58 views
0

我工作在PHP/MySQL的多性判据的搜索,这个搜索有5项: - 类型,价格最小 - 最大价格,数量最小 - 最大数量:多个条件的PHP/MySQL

$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' " ; 

这工作得很好,但用户必须填写所有条目。我的想法是,用户只能输入类型,或类型和价格,或只是数量等。 我试图使用OR子句,但我没有让它工作正常。

+2

SQL注入。如果你使用mysqli :: real_query(...)你很好,虽然 –

+0

你的问题很不清楚...... – Norse

回答

1
where 
    (a = '$a' or '$a' = '') 
and (b <= '$b' or '$b' = '') 
and (c >= '$c' or '$c' = '') 

通知,如果一个变量是一个空字符串,其条件总是被满足。

+0

谢谢,正是我想要的。它现在的作品:) – Common

+0

不客气。 – goat

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