优化SQL查询

时间:2015-07-02 04:17:03

标签: mysql sql optimization

我有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个不同的查询?我希望你能得到我的问题..

1 个答案:

答案 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!此外,如果你有一个数组,而不是五个不同的变量,它会更好。