繁体   English   中英

多个搜索过滤器MySQL数据库

[英]Multiple Search Filters MySQL Database

我有一个包含有关某个人的信息的数据库。 可以说我想搜索一个国家的人。 所以我输入了10个数据。 在那之后,我想进一步缩小到男性人群。

如何做一个SQL,该SQL首先可以搜索国家/地区,然后可以搜索性别。

$sql="SELECT * FROM people 
  WHERE country like $search1%
  ORDER BY ASC ";

$sql="SELECT * FROM people 
  WHERE country like $search1%
  AND Gender = $search2
  ORDER BY ASC ";

如何将它们合并为一个$ sql语句?

尝试将所有情况与此代码结合起来:

$sql = "SELECT *
FROM people
WHERE (country LIKE %$search1% AND $search2='')
OR ($search1='' AND gender=$search2)
OR (country LIKE %$search1% AND gender=$search2)";

添加您自己的ORDER BY子句。

更新

SELECT * 
FROM people 
WHERE 
((country = ('USA') AND gender = 'male') 
OR 
(country LIKE ('USA') OR gender LIKE 'male'))
ORDER BY ASC

第一行((country = ('USA') AND gender = 'male')

对于第二行(country LIKE ('USA') OR gender LIKE 'male'))

对于其中一个,将'%'放入不需要的位置。

例如(country LIKE ('USA') OR gender LIKE '%'))

子查询:

SELECT * FROM(选择* FROM所在国家/地区,例如$ search1%的人)作为people1性别= $ search2按ASC排序

您可以结合使用。 首先检查过滤器是否具有值。

检查是否使用条件并连接一个字符串,然后执行它,例如

$sql="SELECT * FROM people WHERE 1 ";
if($search1% != NULL){
   $sql.="AND country like $search1% ";
}
elseif($search2 != NULL){
   $sql.="AND Gender = $search2 ";
}
$sql.="ORDER BY ASC ";

有两种方法

  1. 在MySql中创建视图用于此类复杂的查询

  2. 在php中编写一个函数以建立上述查询

      <?php function searchQuery($key,$gender,$order){ $sql = "SELECT * FROM people WHERE country like %$key% AND Gender = $gender ORDER BY $order" $query= mysql_query($sql); while($data= mysql_fetch_array($query)) { //Do your stuff here and collect in one variable say $searchData } return $searchData } 

希望这个能对您有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM