Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql与or查询_Php_Mysql - Fatal编程技术网

Php mysql与or查询

Php mysql与or查询,php,mysql,Php,Mysql,我需要进行搜索查询,其中用户可以按姓名、课程、年份或成员进行搜索,也可以按上述任何一项进行搜索,并且用户可以使用所有字段或任何数量的字段进行搜索,例如:-仅限于名称和课程 这怎么可能?我不想做不同的查询,一个查询可以吗?现在我的问题是: $query="SELECT * FROM fsb_profile WHERE profile_name = '".$_REQUEST['name']."' AND profile_member= '".$_REQUEST['type']."

我需要进行搜索查询,其中用户可以按姓名、课程、年份或成员进行搜索,也可以按上述任何一项进行搜索,并且用户可以使用所有字段或任何数量的字段进行搜索,例如:-仅限于名称和课程

这怎么可能?我不想做不同的查询,一个查询可以吗?现在我的问题是:

$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']."'";

但它没有运行,它只是按字段中的任何一个进行搜索,这是如何实现的?

只需使用
即可进行查询

$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']."'";

未测试。

只需使用
即可进行查询

$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']."'";

未测试。

如果您与where子句混合使用AND或在where子句中使用AND,那么使用括号来准确表示组合是很有用的:(a和B)或者C与a和(B或C)不同。SQL将以自己的方式解释A和B或C(没有任何括号),但不一定是您期望(或打算)的解释方式

e、 g

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

WHERE ( Likes Soccer AND  Likes Pizza ) OR Likes Whiskey

正在寻找一个既喜欢足球又喜欢比萨饼的人,或者一个喜欢威士忌的人;因此,它将挑选那些一定也喜欢比萨饼的足球爱好者,或者威士忌爱好者,或者那些一定也喜欢比萨饼但可能也喜欢威士忌的足球爱好者。如果你在where子句中混合了AND,那么使用括号来准确地表示组合是很有用的:(a和B)或者C与a和(B或C)不同。SQL将以自己的方式解释A和B或C(没有任何括号),但不一定是您期望(或打算)的解释方式

e、 g

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

WHERE ( Likes Soccer AND  Likes Pizza ) OR Likes Whiskey

正在寻找一个既喜欢足球又喜欢比萨饼的人,或者一个喜欢威士忌的人;因此,它将挑选一定也喜欢比萨饼的足球爱好者,或威士忌爱好者,或一定也喜欢比萨饼但可能也喜欢威士忌的足球爱好者

你已经反复问了同样的问题。帮自己一个忙,学习一点SQL和布尔代数(完成后别忘了阅读SQL注入漏洞)。听起来你只需要使用OR子句过滤这三个字段。您能否发布一些示例数据,以及您希望从特定搜索查询中获得什么样的输出?将帮助我们帮助您:)使用
mysql\u real\u escape
或准备好的语句;或者准备好面对可能的重复,因为你已经一遍又一遍地问同样的问题。帮自己一个忙,学习一点SQL和布尔代数(完成后别忘了阅读SQL注入漏洞)。听起来你只需要使用OR子句过滤这三个字段。您能否发布一些示例数据,以及您希望从特定搜索查询中获得什么样的输出?将帮助我们帮助您:)使用
mysql\u real\u escape
或准备好的语句;或者准备好面对可能的