方法一:
<?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="开始查询" /> ?>