带有多个“OR”语句的MySQL查询

时间:2014-03-06 13:21:04

标签: php mysql where-clause

我有一个查询,我已经在PHP之外直接在SQL上测试并且仍然遇到同样的问题

这个想法是$ currentArtist是通过使用GET方法发送的,其中此值与显示信息的event_artist列中的值匹配。

SELECT 
            *
        FROM
            `".DBN."`.`events`
        WHERE
            `event_artist1` OR `event_artist2` OR `event_artist3` = '".$currentArtist."'

    ";

我遇到的问题是它完全忽略了查询的WHERE部分。它只返回完整的表结果,而不是与$currentArtist匹配的结果。

我测试了$currentArtist,它运行正常。我不知道如何让完整的陈述发挥作用。

我已经尝试围绕括号中的OR语句,如下所示:

(`event_artist1` OR `event_artist2`...) = '".$currentArtist."'

如果$currentArtist等于" 1"是艺术家表中第一个存储信息的人。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:6)

SELECT *
  FROM events e
 WHERE '$currentArtist' IN (e.event_artist1,e.event_artist2,e.event_artist3);

答案 1 :(得分:0)

SELECT * FROM `".DBN."`.`events` WHERE
            `event_artist1`= '".$currentArtist."' OR `event_artist2`= '".$currentArtist."' OR `event_artist3` = '".$currentArtist."'";

答案 2 :(得分:0)

SELECT *
FROM `".DBN."`.`events`
WHERE `event_artist1` = '".$currentArtist."' 
OR `event_artist2` = '".$currentArtist."' 
OR `event_artist3` = '".$currentArtist."'
";

希望这有帮助。