Php 带有或和的SELECT语句,当数据库未完全填充时成功,当数据库未完全填充时失败。
我对select语句有问题 我的表中填充了数据,我使用此查询从表中获取特定数据:Php 带有或和的SELECT语句,当数据库未完全填充时成功,当数据库未完全填充时失败。,php,mysql,Php,Mysql,我对select语句有问题 我的表中填充了数据,我使用此查询从表中获取特定数据: SELECT * FROM company WHERE ( paid = 'yes' AND country = '$country'
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个类别列时,它不会从表中选择任何内容。但如果我从一个类别中删除数据,它将选择正确的数据
有人能帮忙吗
非常感谢为一系列OR子句添加额外的匹配机会永远不会使您的条件从True变为False,除非它试图匹配NULL或空字符串。在这种情况下,有一个空白列将导致它始终匹配,而在所有列中有数据将导致它始终失败
我敢打赌,如果你检查你的代码,$子类别没有正确设置,你的ORs都在寻找类别 哪个类别是空的重要吗?另外,在最后一个和之前不需要括号。查询看起来还可以,您是否有任何可能出错的周围代码?能否显示一些数据点以及哪些数据点导致了问题。kasavbere:是的,哪一个为空并不重要。我只需要匹配其中一个。Joachim:我从mysql中获得$country\u escape\u string$\u get['country'],但我确信有正确的输入,并对其进行了测试。所有其他代码都只是输出我从查询中得到的结果:当您从控制台用一个示例案例替换变量时,是否得到相同的结果?谢谢。这就是问题所在。我有错误的初始化子类别:嗯,你做了一个很好的工作,注意和描述不寻常的行为与空白栏。我玩得很开心啊哈!现在我明白了,所以至少有一些好处。对于捕捉这样的问题,我经常发现回显我正在发送的查询确实很有帮助。转到准备好的查询的一个缺点是,您不能这样做,但您仍然可以打印查询的文本以及正在发送的参数数组。