我有 MYSQL 查询:
$sql = "SELECT * FROM cities WHERE ";
if ($city) { $where .= ($where ? " AND " : "")." ( city = '$city' ) "; }
if ($street) { $where .= ($where ? " AND " : "")."( street = '$street'"); }
if ($where) {
$sql .= $where;
$query = mysql_query($sql) or die(mysql_error($dbconnect_finder));
}
我想建立这个查询,如果找不到任何内容,它将使用 OR 运算符而不是 AND。我知道如果没有结果我可以再次查询。为了降低成本,我想在一个查询中完成它。
编辑: 当用户搜索 $city 和 $street 时,将使用 $city = "Londan"(而不是伦敦),$street = "someStreet"。 AND 运算符将不起作用。那么 OR 运算符应该起作用。是否可以在一个 MYSQL 查询中完成此操作?
最佳答案
你可以尝试一下
$sql = "SELECT * FROM cities WHERE city = '$city' OR street = '$street'";
或者你甚至可以尝试使用
$sql = "SELECT * FROM cities WHERE city = '$city'";
$result = mysql_query($sql);
if(count($result) == 0) {
$sql .= " OR street = '$street'";
$result = mysql_query($sql);
}
由于 mysql_*
函数已弃用,因此您最好使用 mysqli_*
函数或 PDO
语句。
关于php - 按两个值选择(AND),如果找不到任何值,则按每个值选择(OR),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23056879/