php - php sql 查询:AND、OR 运算符无法正常工作
问题描述
我有一个很大的查询,但我会简化它,只用相关的东西。
查询。
$sql = "SELECT *
FROM articles a
WHERE a.published=1
OR a.published=0
AND a.title LIKE '%$keyword%'
OR a.summary LIKE '%$keyword%';
我不能正确的是 AND 和 OR,在上面的示例中,我想显示所有发布为 0 或 1 的文章,并且 a.title 必须包含“Lorum” ora.summary 必须包含“Lorum”。
目前,当我运行查询时,它会返回所有文章,即使是与关键字不匹配的文章,这是因为带有 a.published 的 OR 运算符,我知道这一点,因为当我删除该部分时,查询工作正常。
解决方案
您只需要在 SQL 语句中包含括号即可对运算符进行分组,例如
$sql = "SELECT *
FROM articles a
WHERE (a.published=1 OR a.published=0)
AND (a.title LIKE '%$keyword%' OR a.summary LIKE '%$keyword%');
推荐阅读
- sql - 每次迭代在过程中传递值对
- c# - 使用 shell32 获得的便携式 USB 设备路径 - 路径中的字符无效
- git - Git 我已经检查了主人,但我想恢复这个
- amazon-web-services - 在网页上获取 EC2 实例 ID
- python - 此代码为 Python 3 和 Python 2 输出不同的值,如何为两者获得相同的结果?
- azure - 使用 Azure DevOps API 共享拉取请求
- nestjs - 在实体 NestJS 中使用模块服务
- r - 如何计算以下排除 R 中的索引总和?
- docker - 构建 Docker 映像在一台机器上成功,但在另一台机器上失败,并出现“无法解析 ...”
- angular - 如何在不使用订阅的情况下从 observable 获取值