如何在mysql中优化查询

时间:2013-08-16 06:27:10

标签: php mysql

我的搜索mysql查询是:

$result = mysql_query("SELECT * FROM room_tb WHERE location ='{$location}' AND price BETWEEN '$minprice' AND '$maxprice' ")or die('Could not connect: ' . mysql_error()); ;

这使得强制同时输入位置以及最低和最高价格。 我想要一个查询,可以让用户输入位置或最高和最低价格,以及允许用户按两个字段搜索。我该怎么办?

3 个答案:

答案 0 :(得分:4)

当我使用可选字段生成查询时,我创建了每个字段的数组,然后将其与implode

连接起来
$query_array = array();
$queries_stringed = '';

if(strlen($location) > 0){
    $query_array[] = "location ='{$location}'";
};
if(strlen($minprice) > 0 && strlen($maxprice) > 0){
    $query_array[] = "(price BETWEEN '$minprice' AND '$maxprice')";
};
if(!empty($query_array)){
    $queries_stringed = "WHERE ".implode(" AND ", $query_array);
};

$result = mysql_query("SELECT * FROM room_tb $queries_stringed");

答案 1 :(得分:0)

这应该为你做到:

$query = "SELECT * FROM room_tb ";

if($location){
$query .= " WHERE location ='{$location}' ";
}

if(($minprice)&&($maxprice)&&(!$location)){
$query .= " WHERE price BETWEEN '$minprice' AND '$maxprice'";
}

if(($minprice)&&($maxprice)&&($location)){
$query .= " AND price BETWEEN '$minprice' AND '$maxprice'";
}

$result = mysql_query($query)or die('Could not connect: ' . mysql_error());

干杯

答案 2 :(得分:0)

作为这些答案的补充 - 您不应该信任用户输入并且应该转义给定字符串或使用PDO而不是mysql_函数