sql多变量条件查询,变量条件可能为全部都符合。利用1=1做字符串连接查询

来源:互联网 发布:oracle sql分页优化 编辑:程序博客网 时间:2024/06/09 19:52
<?php

if(($_SESSION['type']=="" && $_REQUEST["type"]=="") || $_REQUEST["type"]=="不限"){

//如果session中存的值和request接收的值都为空  或者为request为不限 判断为真

if($_REQUEST["type"]=="不限"){
$_SESSION["type"]="";

}
 $str = "1=1 ";//sql语句连接字符串置为 1=1 为所有值。
}else{
if($_REQUEST["type"]==""){
$str = " typeid =". $_SESSION["type"]." " ;
}else{
$_SESSION['type']=$_REQUEST["type"];

$str = " typeid = ".$_SESSION["type"]." " ;

//如果判断为假,则sql连接字符串置为以上。用于后面的多条件查询。

}


}


if($_SESSION['place']=="" && $_REQUEST["place"]==""||$_REQUEST["place"]=="不限"){
if($_REQUEST["place"]=="不限"){
$_SESSION["place"]="";
}
 $str1 = "and 1=1 ";


}else{
if($_REQUEST["place"]==""){
$str1 = " and dengji = "."'".$_SESSION[place]."' ";
}else{
$_SESSION['place']=$_REQUEST["place"];
$str1 = " and dengji = "."'".$_SESSION[place]."' ";}

}
 
if($_SESSION['year']==""&&$_REQUEST["year"]==""||$_REQUEST["year"]=="不限"){
if($_REQUEST["year"]=="不限"){
$_SESSION["year"]="";
}
$str2 = "and 1=1 ";
}else{
if($_REQUEST["year"]==""){
$str2 = " and addtime >= $_SESSION[year] and addtime < $_SESSION[year2] ";
}else{
$_SESSION['year']=$_REQUEST["year"];
$_SESSION["year2"]=$_REQUEST["year"]+10;
$str2 = " and addtime >= $_SESSION[year] and addtime < $_SESSION[year2] ";
}
}


if($_SESSION['brand']==""&&$_REQUEST["brand"]==""||$_REQUEST["brand"]=="不限"){
if($_REQUEST["brand"]=="不限"){
$_SESSION["brand"]="";
}
$str3 = "and 1=1 ";
}else{
if($_REQUEST["brand"]==""){
$str3 = " and  pinpai ="."'". $_SESSION[brand]."'" ;
}else{
$_SESSION['brand']=$_REQUEST["brand"];
$str3 = " and  pinpai ="."'". $_SESSION[brand]."'" ;
}
}


if($_SESSION['price1']==""&&$_REQUEST["price1"]==""||$_REQUEST["price1"]=="不限"){
if($_REQUEST["price1"]=="不限"){
$_SESSION["price1"]="";
}
$str4 = "and 1=1 ";
}else{
if($_REQUEST["price1"]==""){
$str4 = " and huiyuanjia >= $_SESSION[price1] ";
}else{
$_SESSION['price1']=$_REQUEST["price1"];


$str4 = " and huiyuanjia >= $_SESSION[price1] ";
}
}


if($_SESSION['price2']==""&&$_REQUEST["price2"]=="" ||$_REQUEST["price2"]=="不限"){
if($_REQUEST["price2"]=="不限"){
$_SESSION["price2"]="";
}
$str5 = "and 1=1 ";
}else{
if($_REQUEST["price2"]==""){
$str5 = " and huiyuanjia <= $_SESSION[price2] ";
}else{
$_SESSION['price2']=$_REQUEST["price2"];
$str5 = " and huiyuanjia <= $_SESSION[price2] ";
}

}


?>


//html部分

<?php 
$type_order = "id";
mysql_query("SET NAMES 'utf8';");
$sql="select * from tb_shangpin where ".$str.$str1.$str2.$str3.$str4.$str5."  order by ".$type_order." desc " ;//sql语句为上面多个$str 的连接,做多条件查询!  
$arr=mysql_query($sql);
  print_r($sql); 
while($info=mysql_fetch_assoc($arr)){

 ?>

//html部分,循环输出数组中的元素。效果见下图

<?php }?>


在做商品分类查询时,某一个查询条件为不限时sql中不太好处理。利用1=1这一个恒为真条件,于通过字符串连接的方法就能够比较方便的处理。效果见下面的图。

原创粉丝点击