首页 > 解决方案 > 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 运算符,我知道这一点,因为当我删除该部分时,查询工作正常。

标签: phpsql

解决方案


您只需要在 SQL 语句中包含括号即可对运算符进行分组,例如

$sql = "SELECT * 
        FROM articles a 
        WHERE (a.published=1 OR a.published=0) 
        AND (a.title LIKE '%$keyword%' OR a.summary LIKE '%$keyword%');

推荐阅读