php+mysql多条件多值查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php+mysql多条件多值查询相关的知识,希望对你有一定的参考价值。

从两个checkbox里面分别得到status(一个或多个值),和(一个或多个值) 来查mysql数据库一张表的数据 。
where条件里面,status和from两个字段都要满足条件
比如,结果数据应该只能是属于从checkbox得到的status的一个或几个值,而且from字段也要只是checkbox得到的一个或几个值,不能有其他的不是checkbox得到的status和from的值。
从两个checkbox里面分别得到status(一个或多个值),和from(一个或多个值) 来查mysql数据库一张表的数据 。

其实就是一个查询页面里面有两个checkbox。所以查询条件要满足两个checkbox得到的值。比如,如果选项得到的status是“待定”和“确认”,然后from是“相册”“主页”,所以结果应该是显示状态为“待定”或者“确认”的来自“相册”或“主页”的数据

  php+Mysql多条件多值查询示例代码:

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><br/>
面积:<input name="area" type="text"/><br/>
地址:<input name="addr" type="text"/><br/>
<input name="btn" type="submit" value="搜索" /><br/>
</form>
</body>
</html>

deal.php文件:

<?php
//连接数据库
$conn=mysql_connect("localhost","root","");

//选择数据库
$db=mysql_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=mysql_query($query);

//遍历结果
echo "搜搜结果如下:";
while($row=mysql_fetch_array($result))
    
    echo "地址:".$row[\'addr\'];
    echo "<br/>";
    echo "面积:".$row[\'area\'];
    echo "<br/>";
    echo "居室:".$row[\'type\'];
    echo "<br/>";
    echo "价格:".$row[\'addr\'];
    echo "<br/>";
    //等等


?>
参考技术A 首先你肯定会有两个变量去获取status和from的值,假设两个字段分别为status和from,则select * from 表名 where `status` in (status值) and `from` in (from值),checkbox是选中就能得到值的本回答被提问者采纳 参考技术B select status , form from table where status in ('待定', '确认') and form in('相册', '相册');
其中status in ('待定', '确认') and form in('相册', '相册');
括号里面的值就是从checkbox中取到的值。
参考技术C SELECT * FROM `from` WHERE `status` in (1,2)

多条件查询(php+mysql) 租房子例子

<body>
<?php

//多条件
$tiaojian2= " 2=2 ";
$attr2 = "";
//判断区域
if(!empty($_POST["area"]))
{
	$attr2 = $_POST["area"];
	$str2 = implode("‘,‘",$attr2);
	$tiaojian2 = "area in(‘{$str2}‘)";
}
//多条件
$tiaojian3= " 2=2 ";
$attr3 = "";
//判断房屋类型
if(!empty($_POST["renttype"]))
{
	$attr3 = $_POST["renttype"];
	$str3 = implode("‘,‘",$attr3);
	$tiaojian3 = "renttype in(‘{$str3}‘)";
}
//多条件
$tiaojian4= " 2=2 ";
$attr4 = "";
//判断租赁类型
if(!empty($_POST["houesetype"]))
{
	$attr4 = $_POST["houesetype"];
	$str4 = implode("‘,‘",$attr4);
	$tiaojian4 = "houesetype in(‘{$str4}‘)";
}

?>
<form action="sousuoyemian.php" method="post">

    
    <div>区  域:<input type="checkbox" onclick="quanxuanqu(this)"/>全选
       <?php
	          $tj=" and 1=1 ";
	   if(!empty($_POST["gjz"]) && $_POST["gjz"]!== "" )
	   {  $tj=" and kerword like ‘%{$_POST[‘gjz‘]}%‘ ";
		} 
              include("fengzhuang.php");
			  
               $db = new FENG();
               $s="select * from house";
               $a=$db->query($s);
               echo"<div>";
               foreach($a as $v)
               {
                 echo"<input type=‘checkbox‘  class=‘quyu‘ value=‘$v[2]‘ name=‘area[]‘/>{$v[2]}";
               }
               echo"</div>";
    ?>
    </div><br />
    
    <div>房屋类型:<input type="checkbox" onclick="quanxuanfang(this)"/>全选
      <?php
    
               echo"<div>";
               foreach($a as $v)
               {
                 echo"<input type=‘checkbox‘  class=‘fangwu‘ value=‘$v[5]‘ name=‘renttype[]‘/>{$v[5]}";
               }
               echo"</div>";
    ?>
    </div><br />
    
    <div>租赁类型:<input type="checkbox" onclick="quanxuanzu(this)"/>全选
      <?php
               echo"<div>";
               foreach($a as $v)
               {
                 echo"<input type=‘checkbox‘ class=‘zulin‘ value=‘$v[6]‘ name=‘houesetype[]‘/>{$v[6]}";
               }
               echo"</div>";
    ?>
    </div><br />
    
    <!-- 关键字查询 -->
    <div>关 键 字:<input type="text" name="gjz"/></div>
    <div><input type="submit" value="搜索" /></div>
</form>

   <table style="width:100%" border="1" cellpadding="0" cellspacing="0">
         <tr>
            
            <td>关键字</td>
            <td>区域</td>
            <td>使用面积</td>
            <td>租金</td>
            <td>租赁类型</td>
            <td>房屋类型</td>
         </tr>
   
          <?php
		  		 
		   $sql="select * from house where  {$tiaojian2} and  {$tiaojian3} and {$tiaojian4} ".$tj;
		   
		   $ar=$db->query($sql);
		  
		   foreach($ar as $v)
		   {
			  echo"<tr>";
			  echo"<td>{$v[1]}</td><td>{$v[2]}</td><td>{$v[3]}</td><td>{$v[4]}</td><td>{$v[5]}</td><td>{$v[6]}</td>";  
			  echo"</tr>"; 
			}
		  
		  ?>
   
   </table>
 

<script type="text/javascript">
  
   function  quanxuanqu(qu)
   {
	   //找到下面所有的复选框
	   var  c=document.getElementsByClassName("quyu");
	   //遍历所有复选框,设置选中状态
	   for (var i=0; i<c.length; i++)
	   {
		   if(qu.checked)
		   {
			 c[i].setAttribute("checked","checked");
		   }
		   else
		    {
			 c[i].removeAttribute("checked");  
		    }  
			 
	   }
	   
	   
	} function  quanxuanfang(fang)
   {
	   //找到下面所有的复选框
	   var  c=document.getElementsByClassName("fangwu");
	   //遍历所有复选框,设置选中状态
	   for (var i=0; i<c.length; i++)
	   {
		   if(fang.checked)
		   {
			 c[i].setAttribute("checked","checked");
		   }
		   else
		    {
			 c[i].removeAttribute("checked");  
		    }  
			 
	   }
	   
	   
	}
	
	 function  quanxuanzu(zu)
   {
	   //找到下面所有的复选框
	   var  c=document.getElementsByClassName("zulin");
	   //遍历所有复选框,设置选中状态
	   for (var i=0; i<c.length; i++)
	   {
		   if(zu.checked)
		   {
			 c[i].setAttribute("checked","checked");
		   }
		   else
		    {
			 c[i].removeAttribute("checked");  
		    }  
			 
	   }
	   
	   
	}
  </script>

</body>

  

以上是关于php+mysql多条件多值查询的主要内容,如果未能解决你的问题,请参考以下文章

在单个查询中使用 PHP 连接两个 mysql 表

php多条件搜索

php+mysql 如何优化千万级数据模糊查询加快

PHP之路——MySql查询语句

mysql如何进行多值排序

如何按条件查询MYSQL数据库中的表名