我的搜索mysql查询是:
$result = mysql_query("SELECT * FROM room_tb WHERE location ='{$location}' AND price BETWEEN '$minprice' AND '$maxprice' ")or die('Could not connect: ' . mysql_error()); ;
这使得强制同时输入位置以及最低和最高价格。 我想要一个查询,可以让用户输入位置或最高和最低价格,以及允许用户按两个字段搜索。我该怎么办?
答案 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_函数