我有5个dropDowns,用户可以从中选择从表中获取数据的值。下拉列表的值是来自表的不同列的不同值。每个下拉菜单也有一个选项“ALL”。我将用户选择存储在5个变量中,即variablename,variablename1等等......默认情况下,下拉值将为ALL ...
目前我正在使用if和else-if条件的32个不同查询来获取数据..即
if($variablename=="ALL" && $variablename2=="ALL" && $variablename5=="ALL" && $variablename6=="ALL" && $variablename7=="ALL")
{ $query="SELECT * FROM table ....}
else if($variablename!="ALL" && $variablename2!="ALL" && $variablename5!="ALL" && $variablename6!="ALL" && $variablename7!="ALL")
{ $query= "SELECT * FROM table WHERE abc = '$variablename' and bcd = '$variablename1' and cde= '$variablename2'
and def= '$variablename4' and efg= '$variablename4' ; ...}
注意!= ALL表示用户从dropDown中选择了一些值,除了ALL选项。
这样我就可以进行32次不同的查询。如何才能进行更多优化查询以摆脱32个不同的查询?我希望你能得到我的问题..
答案 0 :(得分:0)
$query = "SELECT * FROM table";
$conditions = Array();
if ($variablename !== "ALL") {
$conditions[] = "abc = '" . mysqli_real_escape_string($variablename) . "'";
}
if ($variablename2 !== "ALL") {
$conditions[] = "bcd = '" . mysqli_real_escape_string($variablename2) . "'";
}
// ...
if ($conditions) {
$query .= "WHERE " . implode(" AND ", $conditions);
}
小心Bobby Tables!此外,如果你有一个数组,而不是五个不同的变量,它会更好。