php - 按两个值选择(AND),如果找不到任何值,则按每个值选择(OR)

标签 php mysql

我有 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/

相关文章:

php - php 和 jquery 哪个更好重定向

php - 我应该在mysql中的多个request_id上添加什么类型的索引

MySQL HASH 索引显示为 MyISAM 数据库的 BTREE

PHP 常量 SQL 查询

javascript - 如何从数组中为 div 提供随机背景颜色

PHP json_encode错误: Empty last record

php - 为什么这个失败的 PDO 查询返回 `false` 以外的东西?

javascript - Ajax PHP - 检查从 php 返回的响应/数据值

mysql - 维基百科转储表页面链接的问题

c# - 更新表中一行的正确 sql 是什么?