یکی از مشکلات بزرگ در ایجاد یک Query این است که اگر چند Condition (شرط) که همگی اختیاری باشند بخواهند در WHERE قرار بگیرند، این است که اگر اولین شرط خالی باشد، با توجه به اینکه بین شرطها AND درج میشود، دستور با مشکل مواجه میشود.
مثلاً چیزی شبیه به این خواهد شد:
SELECT * FROM users WHERE AND x=$x
مشخص است که بلافاصله بعد از WHERE نباید AND قرار گیرد.
برای رفع این مشکل، برای ساخت where_query_string از این کد الگو بگیرید:
$where = array();
if($A != 'any'){ // or whatever you need
$where[] = "A = $A'";
}
if($B != 'any'){ // or whatever you need
$where[] = "B = $B'";
}
if($C != 'any'){ // or whatever you need
$where[] = "C = $C'";
}
$where_string = implode(' AND ' , $where);
$query = "SELECT * FROM table";
if($where){
$query .= ' ' . $where_string;
}