Blogger Information
Blog 263
fans 3
comment 2
visits 113314
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
mysql多条件组合查询
福哥的博客
Original
1431 people have browsed it

方法一:

<?php
//6个条件,组合筛选这大概要写6*5*4*3*2*1个if()
  
/* $info = $_POST;  
 if(isset($info['xxx'])){  
   $sql = "select * from tablename where xxxx";  
}else if(isset($info['xxxx'])){  
  
}   
......  */
 
//简便方法如下
$info = I('post.');  
//根据条件写判断  
$sql = "select * from ordertable where 1=1";  
if($info['warehouse']){  
    $sql = $sql." and MarketId = ".$info['warehouse'];  
}  
if($info['Createtime']){  
     $sql = $sql." and Createtime = ".$info['Createtime'];  //如果第一条成立,此$sql就是变化后的新$sql,依次加下去,哪条符合就加一个and.
}  
if($info['Paytime']){  
     $sql = $sql." and Paytime = ".$info['Paytime'];  
}  
if($info['Paystatus']){  
     $sql = $sql." and Paystatus = ".$info['Paystatus'];  
}  
if($info['orderNum']){  
     $sql = $sql." and orderNum = ".$info['orderNum'];  
}  
if($info['Product']){  
     $sql = $sql." and Product = ".$info['Product'];  
}  
?>

方法二:

<?php
//注释1-----------------------------
$depart=$_POST["depart"];
$ename=$_POST["ename"];
//注释2------------------------
if($depart != null){
    $a = " and depart like '%$depart%'";}
if($ename != null){
    $b = " and ename like '%$ename%'";}
//注释3------------------------
$q = "SELECT * FROM info where (1=1)";
$q .=$a;
$q .=$b;
//注释4------------------------------------------
mysqli_query("SET NAMES GB2312");
$rs = mysqli_query($link, $q);
echo "<table>";
echo "<tr><td>部门</td><td>员工姓名</td></tr>";
while($row = mysqli_fetch_object($rs)) echo "<tr><td>$row->depart</td><td>$row->ename</td></tr>";
echo "</table>";
mysqli_close($link);
/*注释1:接收search.php通过post传递出的参数,把两个参数分别存储入变量:depart和ename。
注释2:判断参数是否为空,如果为空,不作任何操作。如果有参数传出,则生成相应SQL语句。
注释3:用追加的方法生成SQL语句。
注释4:生成数据集,显示数据,最后关闭数据库连接。*/
?>

方法三:

index.html代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SQL多条件查询示例</title>
</head>
<body>
<form method="post" action="deal.php">
<h1>房屋出租</h1>
房屋类型:<select name="type">
<option value="1">一居室</option>
<option value="2">二居室</option>
<option value="3">三居室</option>
</select>
面积:<input name="area" type="text"/>
地址:<input name="addr" type="text"/>
<input name="btn" type="submit" value="搜索" />
</form>
</body>
</html>

deal.php文件:-->

<?php
//连接数据库
$conn=mysqli_connect("localhost","root","");
 
//选择数据库
$db=mysqli_select_db("数据库名");
 
//接收 参数
$type=$_POST['type'];
$area=$_POST['area'];
$addr=$_POST['addr'];
 
//SQL语句主题
$query="select * from room  where "; 
 
//根据条件和传的值拼接sql语句
//判断面积不为空
if($type!=""){
    //然后根据具体面积分情况拼接
    switch($type){
        case 1:
            //一居室
            $query.=" room_type=1"; 
            break;
        case 2:
            $query.=" room_type=2";
            break;
        case 3:
            $query.=" room_type=3";
            break;
    }
}
 
//面积
if($area!=""){
    $query.=" and area ={$area}";
}
 
//地址
if($addr!=""){
    $query.=" and addr like '%{$addr}%'"; //地址
}
 
//执行查询
$result=mysqli_query($link,$query);
 
//遍历结果
echo "搜搜结果如下:";
while($row=mysql_fetch_array($result)){
     
    echo "地址:".$row['addr'];
    echo "";
    echo "面积:".$row['area'];
    echo "";
    echo "居室:".$row['type'];
    echo "";
    echo "价格:".$row['addr'];
    echo "";
    //等等
}
 
?>

方法四:

所使用的方法:$sqlArr=array();array_push();implode();

<?php
/*
原理,
一、建立sql语句前半句,并且建立一个空数组。
二、根据条件是否为空来判断是否向数组中添加元素。如果不为空,使用array_push()方法来添加,第一个参数为数组名称,第二个参数为值。
三、全部条件判断完毕用implode()方法来合并数组元素。第一个参数为使用什么字符来拆分,可以为字符串,第二个参数为数组。
四、加上sql语句后半句。完成sql语句!
 */

$sql="select * from member where member_Type=0 and (";
  $sqlArr=array();
  if($member_id!="")
       array_push($sqlArr," id like '$member_id' ");
  if($member_Name!="")
       array_push($sqlArr," member_Name like '%$member_Name%' ");
  if($member_Creation!="")
       array_push($sqlArr," member_Creation>'%$member_Creation%'");
      $sql.=implode(" or ",$sqlArr);
      $sql.=") order by id desc";
      $rs=mysqli_query($link,$sql);
 $total=mysqli_num_rows($rs);
 $totalpage=ceil($total/$PageSize);
 if($page>$totalpage)
      $page=$totalpage;
 
 
$sql="select * from member where member_Type=0 and (";
  $sqlArr=array();
  if($member_id!="")
       array_push($sqlArr," id like '$member_id' ");
  if($member_Name!="")
       array_push($sqlArr," member_Name like '%$member_Name%' ");
  if($member_Creation!="")
       array_push($sqlArr," member_Creation>'%$member_Creation%'");
  $sql.=implode(" or ",$sqlArr);
  $sql.=") order by id desc limit ".($page-1)*$PageSize.",".$PageSize;
 
这样,所有的参数都可以添加进来。

?>

方法五:

php商品条件筛选功能

<?php
php按条件筛选商品的功能,还是比较简单的。
其实就是根据不同的条件组成SQL查询条件,从数据库里查出不同的商品出来。
举个例子:
用户可以按价格范围、按品牌、按商品名称这几项来综合查询。
那么,在用户选择了上面这些查询条件后(可能这3个条件都设置了,也可能只设置了其中2个),提交到服务器端,服务端程序收到用户的查询条件,开始组装SQL查询语句,最后执行组装好的SQL查询语句,返回结果给用户。

代码举例:
用户提交的查询:
price='0-1000'; //按价格范围0-1000元查询

brandid=20;  //要求品牌必须是ID号为20的这个(假设这个ID号为20的品牌,名字叫”西部数据")
productname='绿盘'; //商品名称只设置了2个字以做模糊查询

用户点了查询按钮后,根据程序的不同,可能是get方式也可能是post方式发送查询请求,现假设为post方式。

然后在服务器端程序中,收到用户的查询请求:
$price=$_POST['price'];
$price_arr=explode('-',$price); //这里是把价格范围按-号拆散成数组,方便在组装SQL查询语句时用。

$brandid=$_POST['brandid'];
$productname=$_POST['productname'];

当然,上面的数据获取后,还要进行相应的安全方面的检查与处理,这里先略过。

接下来,开始组装SQL查询语句:

$sqlexp='';
//下面开始组根据用户设置的查询条件进行SQL查询条件的组装

if(!empty($price)) {
    $sqlexp.=' and (price>='.$price_arr[0].' and price<='.$price_arr[1];

}
if(!empty($brandid)) {
   $sqlexp.=' and brandid='.$brandid;
}
if(!empty($productname)) {
   $sqlexp.=" and instr(productname,'$productname')>0";
}

//下面执行SQL查询

$result=mysql_query("select * from product where state=1 ".$sqlexp);

在上面的查询完成后,把查询结果返回给用户,就完成了用户按条件筛选商品的功能。
追问:
嗯,后面取地址栏参数,拼接where条件,这个都好弄,就不是不知道,怎么在前端页面查询条件上面a链接构造地址。
追答:
在前端页面中,一般是用form表单,而不是用A链接。
<form name="search_form" method="post" action="search.php">
价格范围:<input type="text" name="price" />
品牌:<select name="brandid">
          <option value="">请选择</option>
          <option value="1">希捷</option>
          <option value="20">西部数据</option>
          <option value="21">日立</option>
          </select>
商品名称:<input type="text" name="productname" />
<input type="submit" name="searchbtn" value="开始查询" />

?>


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post