我需要进行搜索查询,用户可以按名称或课程或年份或成员进行搜索,上述任何一个,用户cam也可以搜索所有字段或任意数量的字段,例如; -as only with名称和课程.
怎么可能?我不想进行不同的查询,是否可以使用单个查询?现在我的查询是:
$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']."'";
Run Code Online (Sandbox Code Playgroud)
但它没有运行,它只能搜索任何一个领域,它是如何可能的?
Mar*_*ker 11
如果你在where子句中混合使用OR,那么使用括号来确切表明组合应该如何表达是有用的:(A AND B)或C与A AND(B OR C)不同.SQL将以自己的方式解释A AND B OR C(没有任何括号),但不一定是您可能期望(或打算)解释它的方式.
例如
WHERE Likes Soccer AND ( Likes Pizza OR Likes Whiskey )
Run Code Online (Sandbox Code Playgroud)
正在寻找一个喜欢足球的人,喜欢披萨或威士忌; 所以它会挑选喜欢披萨的足球爱好者,喜欢威士忌的足球爱好者,喜欢披萨和威士忌的足球爱好者
WHERE ( Likes Soccer AND Likes Pizza ) OR Likes Whiskey
Run Code Online (Sandbox Code Playgroud)
正在寻找一个喜欢足球和比萨的人,或者喜欢威士忌的人; 所以它会挑选足球爱好者,他们也必须喜欢披萨,或威士忌爱好者,或者足球爱好者,他们也必须喜欢披萨,但也可能喜欢威士忌