gpt4 book ai didi

php - MySQL WHERE 无法正常工作

转载 作者:行者123 更新时间:2023-12-01 00:45:02 24 4
gpt4 key购买 nike

我有一个 category.php 页面,它显示给定类别 ($tagname) 中的所有文章,其中 enabled=1。当一篇文章只有一个标签(和两个空标签)时,一切都很好。文章将显示在此 category.php 页面上(启用时设置为 1)。但是,如果至少填充了两个标签,那么文章将显示在 category.php 页面上,其中 tag2=$tagname 或 tag3=$tagname - 无论启用字段包含什么(1 表示启用,2 表示禁用)!

底线 - 为什么它会显示,即使该文章的启用设置为 2?

SELECT *
FROM articles
WHERE enabled=1
AND tag1='$tagname'
OR tag2='$tagname'
OR tag3='$tagname'

enabled, int
tag1, varchar(30)
tag2, varchar(30)
tag3, varchar(30)

谢谢!

最佳答案

ANDOR 具有更高的优先级,因此在您的查询中

首先评估enabled=1 and tag1='$tagname' 然后
其结果与下一个 OR 表达式等进行比较...
除非您正确地将 AND 条件与 OR 条件分开,否则输出将是意外的。

如下更改您的查询:

SELECT * FROM articles 
WHERE enabled=1
AND (tag1='$tagname' OR tag2='$tagname' OR tag3='$tagname')

引用:Operator Precedence

关于php - MySQL WHERE 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23403237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com