【问题标题】:How do I use AND and OR in a single statement如何在单个语句中使用 AND 和 OR
【发布时间】:2020-12-22 12:31:38
【问题描述】:

这是我的 SQL,数据由 PHP 提供

SELECT COUNT(*) FROM table 
WHERE approve='true' AND `description`like '%".$name."%' OR  `name`like '%".$name."%' OR `location` like '%".$location."%'

当我处理这个查询时,我能够查看approvefalse 的记录。

【问题讨论】:

  • 您收到什么错误?您可能对使用此代码的 SQL 注入持开放态度。也许您需要使用分组(),因为and 会与or 语句冲突。
  • 或者我如何在单个语句中使用 AND 和 OR
  • sql 应该行批准='true',现在搜索描述和其他列
  • 它当前运行为approve='true' AND descriptionlike '%".$name."%' 然后orname like '%".$name."%'orlocation like '%".$location."%'。将or 位组合在一起,因此这些位是可选位,如下面的答案所示。
  • 我已经更新了我认为应该写的问题,如果不正确请调整。

标签: mysql sql where-clause operator-precedence


【解决方案1】:

ORed 条件可能应该放在括号中:

SELECT COUNT(*) 
FROM table 
WHERE 
    approve = 'true' 
    AND (
        `description` like CONCAT('%', :name, '%') 
        OR  `name`    like CONCAT('%', :name, '%') 
        OR `location` like CONCAT('%', :location, '%') 
    )

【讨论】:

  • (如果使用了mysqli,我会将占位符换成?
猜你喜欢
  • 2010-12-20
  • 1970-01-01
  • 2017-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多