3

我的 mysql 搜索查询是:

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

这使得必须在表格中输入位置以及最低和最高价格。我想要一个可以让用户输入位置或最高和最低价格的查询,并允许用户通过这两个字段进行搜索。我应该怎么办?

4

3 回答 3

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");
于 2013-08-16T06:33:52.557 回答
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());

干杯

于 2013-08-16T06:45:35.747 回答
0

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

于 2013-08-16T06:56:10.670 回答