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'。

目前,当我运行查询时,它会返回所有文章,甚至是那些与关键字不匹配的文章,这是因为 OR 运算符与 a.published,我知道这一点,因为当我删除该部分时,查询工作正常。


MMMHUHU
浏览 156回答 2
2回答

米脂

您只需要在 SQL 语句中包含括号即可对运算符进行分组,例如$sql = "SELECT *          FROM articles a          WHERE (a.published=1 OR a.published=0)          AND (a.title LIKE '%$keyword%' OR a.summary LIKE '%$keyword%');

忽然笑

使用 IN 命令将您的发布分组为 1 个逻辑。    $sql = "SELECT * FROM articles a WHERE a.published IN (1,0) AND a.title LIKE '%$keyword%'   OR a.summary LIKE '%$keyword%';
打开App,查看更多内容
随时随地看视频慕课网APP