mysql和/或查询

时间:2010-07-13 11:05:10

标签: php mysql

我需要进行搜索查询,用户可以按名称或课程或年份或成员进行搜索,上述任何一项,用户cam也可以搜索所有字段或任意数量的字段,例如; - 只有名字和&当然。

怎么可能?我不想进行不同的查询,是否可以使用单个查询?现在我的查询是:

$query="SELECT * FROM fsb_profile 
    WHERE profile_name = '".$_REQUEST['name']."' 
    AND profile_member= '".$_REQUEST['type']."' 
    AND profile_year= '".$_REQUEST['year']."' 
    AND profile_course='".$_REQUEST['course']."' 
     OR profile_name = '".$_REQUEST['name']."' 
     OR profile_member= '".$_REQUEST['type']."' 
     OR profile_year= '".$_REQUEST['year']."' 
     OR profile_course='".$_REQUEST['course']."'";

但它没有运行,只能搜索任何一个字段,它是如何可能的?

2 个答案:

答案 0 :(得分:11)

如果你在where子句中混合AND和OR,那么使用括号来确切表明组合应该如何表达是有用的:(A AND B)或C与A AND(B OR C)不同)。 SQL将以自己的方式解释A AND B OR C(没有任何括号),但不一定是您可能期望(或打算)解释它。

e.g。

WHERE Likes Soccer AND ( Likes Pizza OR Likes Whiskey )

正在寻找一个喜欢足球的人,喜欢披萨或威士忌;所以它会挑选喜欢披萨的足球爱好者,喜欢威士忌的足球爱好者,喜欢披萨和威士忌的足球爱好者

WHERE ( Likes Soccer AND  Likes Pizza ) OR Likes Whiskey

正在寻找喜欢足球和比萨的人,或喜欢威士忌的人;所以它会挑选足球爱好者,他们也必须喜欢披萨,或威士忌爱好者,或者足球爱好者,他们也必须喜欢披萨,但也可能喜欢威士忌

答案 1 :(得分:1)

只需使用or,您的查询即可使用。

$query="SELECT * FROM fsb_profile 
    WHERE profile_name = '".$_REQUEST['name']."' 
     OR profile_member= '".$_REQUEST['type']."' 
     OR profile_year= '".$_REQUEST['year']."' 
     OR profile_course='".$_REQUEST['course']."'";

未经测试。