带有OR和AND的SELECT语句在数据库未完全填充时成功,否则失败。

时间:2012-03-27 20:25:27

标签: php mysql

我对select语句有疑问。

我的表中填充了数据,我使用此查询从表中获取特定数据:

SELECT * FROM company WHERE
                                    (
                                    paid = 'yes' AND
                                    country = '$country'
                                    )
                                    AND
                                    (
                                    categoryid1 = '$subCategory' OR
                                    categoryid2 = '$subCategory' OR
                                    categoryid3 = '$subCategory' OR
                                    categoryid4 = '$subCategory' OR
                                    categoryid5 = '$subCategory' OR
                                    categoryid6 = '$subCategory'
                                    )
                                    ORDER BY title

我的问题是: 当我用数据填充所有6个类别列时,它不会从表中选择任何内容。但是,如果我从1个类别中删除数据,它将选择正确的数据。

任何人都可以帮忙吗?

非常感谢

1 个答案:

答案 0 :(得分:2)

为匹配的一系列OR子句添加额外的机会永远不会使你的条件从True转为False - 除非它试图匹配NULL或“”(空字符串)。在这种情况下,有一个空白列将导致它始终匹配,并且在所有列中包含数据将导致它始终失败。

我敢打赌,如果你检查你的代码,$ subCategory没有正确设置,你的OR都在寻找类别“”。