【问题标题】:MySQL Search multiple columns without ORMySQL搜索不带OR的多列
【发布时间】:2012-04-30 20:37:04
【问题描述】:

我有一个页面,它根据$_POST 变量构建了一个非常长的查询。我之所以尝试在没有 MySQL 的 OR 的情况下执行此操作,是因为我必须重述整个查询,只是为了在最后更改一个小参数,这似乎是一种资源浪费。

这是我的伪查询:

SELECT * FROM names WHERE 
person = '$var1' AND
place = '$var2' AND
location_a = '$var3' AND
location_b = '$var3'

如果我使用OR,这个胖丑的查询将是:

SELECT * FROM names WHERE 
person = '$var1' AND
place = '$var2' AND
location_a = '$var3' OR

person = '$var1' AND
place = '$var2' AND
location_b = '$var3'

有没有办法在不使用OR 的情况下同时在location_alocation_b 中搜索$var3

【问题讨论】:

  • 也许我错了,但第一个条件与第二个条件不匹配......或者我错过了什么?
  • 只是让您知道以防万一,您不想在未正确清理的情况下将用户输入(来自 $_POST $_GET 等的内容)放入查询中。查看 mysql_real_escape_string() 或 PDO 了解更多信息

标签: mysql select multiple-columns


【解决方案1】:

使用括号:

SELECT * FROM names WHERE 
person = '$var1' AND
place = '$var2' AND
(
location_a = '$var3' OR location_b = '$var3'
)

其实我不明白你的问题。您不必重述整个查询。也许你显示你的代码? OR 有什么不好?只需使用括号即可。

【讨论】:

  • 这是我对正确语法的误解。您的回答为我解决了问题并且有效。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多