模糊查询,多条件查询

1.一个条件的模糊查询

复制代码
<body>
<br /> <form action="main.php" method="post"><!--点击查询时会将用户输入的值传递到本页面--> <div>姓名: <input type="text" name="xm" /><!--输入查询的关键字--> <input type="submit" value="查询" /><!--提交按钮,需要一个表单--> </div> </form> <br /> <table width="100%" border="1" cellpadding="0" cellspacing="0"> <tr> <td>代号</td> <td>姓名</td> <td>性别</td> <td>民族</td> <td>生日</td> <td>操作</td> </tr>
复制代码
<?php
复制代码
 1 //先判断有没有提交值
 2     $xm="";  3 if(!empty($_POST["xm"]))//没有值就说明是第一次加载这个页面,没有输入查询条件,点击查询就是查询所有的。有值就按照输入的值查询。  4  {  5 $xm = $_POST["xm"];//把输入的值取出来  6  }  7 $tj = "";//定义一个变量条件(tj)  8 if($xm == "")//如果值为空  9  { 10 $tj = " 1=1 ";//如果值为空,就给条件赋一个恒成立的1=1.根据这个条件能查询出所有的数据。 11  } 12 else 13  { 14 $tj = " name like '%{$xm}%' ";//如果值不为空,就给$tj赋上输入输入的值。 15 }
复制代码
上面带行号的代码可以简化为下面的带行号的
复制代码
 1 $xm="";
 2 if(!empty($_POST["xm"]))//没有值就说明是第一次加载这个页面,没有输入查询条件,点击查询就是查询所有的。有值就按照输入的值查询。  3 {  4 $xm = $_POST["xm"];//把输入的值取出来  5 }  6 $tj = " 1=1 ";//让$tj值默认1=1,  7 if($xm != "")  8 {  9 $tj = " name like '%{$xm}%' ";//如果值不为空,就给$tj赋上输入输入的值。 10 }
复制代码

 

或者更加简化

1 $tj = " 1=1 ";
2     if(!empty($_POST["xm"]) && $_POST["xm"]!="")//没有值就说明是第一次加载这个页面,没有输入查询条件,点击查询就是查询所有的。有值就按照输入的值查询。 3  { 4 $tj = " name like '%{$_POST['xm']}%' "; 5 }
 $db = new MySQLi("localhost","root","666","text1");
    
    $sql = "select * from info where ".$tj;//把条件拼在查询语句后面,并加上where。 $result = $db->query($sql); $attr = $result->fetch_all(); foreach($attr as $v) { echo"<tr>"; $sex = $v[2]?"男":"女"; $name = NationName($v[3]); echo"<td>{$v[0]}</td><td>{$v[1]}</td><td>{$sex}</td><td>{$name}</td><td>{$v[4]}</td><td><a href='shanchu.php?c={$v[0]}' οnclick=\"return confirm('确定删除吗?')\">删除</a><a href='xiugai.php?c={$v[0]}'>修改</a></td"; /*foreach($v as $v1) { echo "<td>{$v1}</td>"; }*/ echo"</tr>"; } function NationName($code) { $db = new MySQLi("localhost","root","666","text1"); $sql = "select name from nation where code = '{$code}'"; $result = $db->query($sql); $attr = $result->fetch_row(); return $attr[0]; } ?> 
复制代码
</table>
<a href="add.php"><input type="button" value="添加数据" /></a> </body>
复制代码

 

下面让查询到的关键字变颜色,用<mark>标签

复制代码
<body>
<br /> <form action="main.php" method="post"><!--点击查询时会将用户输入的值传递到本页面--> <div>姓名: <input type="text" name="xm" /><!--输入查询的关键字--> <input type="submit" value="查询" /><!--提交按钮,需要一个表单--> </div> </form> <br /> <table width="100%" border="1" cellpadding="0" cellspacing="0"> <tr> <td>代号</td> <td>姓名</td> <td>性别</td> <td>民族</td> <td>生日</td> <td>操作</td> </tr>
复制代码
<?php 
    //先判断有没有提交值
    $xxm = "";//定义要关键字变量
    $tj = " 1=1 "; if(!empty($_POST["xm"]) && $_POST["xm"]!="")//没有值就说明是第一次加载这个页面,没有输入查询条件,点击查询就是查询所有的。有值就按照输入的值查询。  { $xxm = $_POST['xm'];//提取关键字 $tj = " name like '%{$_POST['xm']}%' "; } $db = new MySQLi("localhost","root","666","text1"); $sql = "select * from info where ".$tj;//把条件拼在查询语句后面,并加上where。 $result = $db->query($sql); $attr = $result->fetch_all(); foreach($attr as $v) { echo"<tr>"; $sex = $v[2]?"男":"女"; $name = NationName($v[3]); $newname = str_replace($xxm,"<mark>{$xxm}</mark>",$v[1]);//替换关键字,用$newname替换原来的$v[2] echo"<td>{$v[0]}</td><td>{$newname}</td><td>{$sex}</td><td>{$name}</td><td>{$v[4]}</td><td><a href='shanchu.php?c={$v[0]}' οnclick=\"return confirm('确定删除吗?')\">删除</a><a href='xiugai.php?c={$v[0]}'>修改</a></td"; /*foreach($v as $v1) { echo "<td>{$v1}</td>"; }*/ echo"</tr>"; } function NationName($code) { $db = new MySQLi("localhost","root","666","text1"); $sql = "select name from nation where code = '{$code}'"; $result = $db->query($sql); $attr = $result->fetch_row(); return $attr[0]; } ?> 
复制代码
</table>
<a href="add.php"><input type="button" value="添加数据" /></a> </body>
复制代码

 

 

2.两个条件查询,模糊查询加关键字查询。

复制代码
<body>
<br /> <form action="main.php" method="post"><!--点击查询时会将用户输入的值传递到本页面--> <div>姓名: <input type="text" name="xm" /><!--输入查询的关键字--> 民族代号: <input type="text" name="mz" /> <input type="submit" value="查询" /><!--提交按钮,需要一个表单--> </div> </form> <br /> <table width="100%" border="1" cellpadding="0" cellspacing="0"> <tr> <td>代号</td> <td>姓名</td> <td>性别</td> <td>民族</td> <td>生日</td> <td>操作</td> </tr>
复制代码
<?php 
    //先判断有没有提交值
    $xxm = "";
    $tj = " 1=1 "; $tj2 = " 1=1 ";//再做一个条件 if(!empty($_POST["xm"]) && $_POST["xm"]!="")//这个条件是判断xm的,判断模糊查询。  { $xxm = $_POST['xm']; $tj = " name like '%{$_POST['xm']}%' "; } if(!empty($_POST["mz"]) && $_POST["mz"]!="")//再做一个条件判断另一个条件  { $mz = $_POST['mz'];//取民族的代号 $tj2 = " nation = '{$_POST['mz']}' "; } $db = new MySQLi("localhost","root","666","text1"); $sql = "select * from info where ".$tj." and ".$tj2; $result = $db->query($sql); $attr = $result->fetch_all(); foreach($attr as $v) { echo"<tr>"; $sex = $v[2]?"男":"女"; $name = NationName($v[3]); $newname = str_replace($xxm,"<mark>{$xxm}</mark>",$v[1]);//替换关键字 echo"<td>{$v[0]}</td><td>{$newname}</td><td>{$sex}</td><td>{$name}</td><td>{$v[4]}</td><td><a href='shanchu.php?c={$v[0]}' οnclick=\"return confirm('确定删除吗?')\">删除</a><a href='xiugai.php?c={$v[0]}'>修改</a></td"; /*foreach($v as $v1) { echo "<td>{$v1}</td>"; }*/ echo"</tr>"; } function NationName($code) { $db = new MySQLi("localhost","root","666","text1"); $sql = "select name from nation where code = '{$code}'"; $result = $db->query($sql); $attr = $result->fetch_row(); return $attr[0]; } ?> 
复制代码
</table>
<a href="add.php"><input type="button" value="添加数据" /></a> </body>
复制代码

 

 

查询后模糊查询的关键字依然存在

复制代码
<body>
复制代码
 1 <?php
 2 //先判断有没有提交值
 3 $xxm = "";  4 $tj = " 1=1 ";  5 $tj2 = " 1=1 ";//再做一个条件  6 if(!empty($_POST["xm"]) && $_POST["xm"]!="")//这个条件是判断xm的,判断模糊查询。  7  {  8 $xxm = $_POST['xm'];  9 $tj = " name like '%{$_POST['xm']}%' "; 10  } 11 12 if(!empty($_POST["mz"]) && $_POST["mz"]!="")//再做一个条件判断另一个条件 13  { 14 $mz = $_POST['mz'];//取民族的代号 15 $tj2 = " nation = '{$_POST['mz']}' "; 16  } 17 ?>
复制代码

 

<br />
<form action="main.php" method="post"><!--点击查询时会将用户输入的值传递到本页面--> <div>姓名: <input type="text" name="xm" value="<?php echo $xxm ?>" /><!--输入查询的关键字--> 民族代号: <input type="text" name="mz" /> <input type="submit" value="查询" /><!--提交按钮,需要一个表单--> </div> </form> <br /> <table width="100%" border="1" cellpadding="0" cellspacing="0"> <tr> <td>代号</td> <td>姓名</td> <td>性别</td> <td>民族</td> <td>生日</td> <td>操作</td> </tr>
复制代码
 1 <?php 
 2     
 3     $db = new MySQLi("localhost","root","666","text1");  4  5 $sql = "select * from info where ".$tj." and ".$tj2;  6  7 $result = $db->query($sql);  8  9 $attr = $result->fetch_all(); 10 11 foreach($attr as $v) 12  { 13 echo"<tr>"; 14 15 $sex = $v[2]?"男":"女"; 16 17 $name = NationName($v[3]); 18 19 $newname = str_replace($xxm,"<mark>{$xxm}</mark>",$v[1]);//替换关键字 20 21 echo"<td>{$v[0]}</td><td>{$newname}</td><td>{$sex}</td><td>{$name}</td><td>{$v[4]}</td><td><a href='shanchu.php?c={$v[0]}' οnclick=\"return confirm('确定删除吗?')\">删除</a><a href='xiugai.php?c={$v[0]}'>修改</a></td"; 22 /*foreach($v as $v1) 23  { 24  echo "<td>{$v1}</td>"; 25  }*/ 26 echo"</tr>"; 27  } 28 29 function NationName($code) 30  { 31 $db = new MySQLi("localhost","root","666","text1"); 32 $sql = "select name from nation where code = '{$code}'"; 33 $result = $db->query($sql); 34 $attr = $result->fetch_row(); 35 return $attr[0]; 36  } 37 ?> 
复制代码
</table>
<a href="add.php"><input type="button" value="添加数据" /></a> </body>
复制代码

转载于:https://www.cnblogs.com/l5580/p/6054043.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 MongoDB 模糊查询并同时满足多个条件,可以使用正则表达式进行查询。在 MongoDB 中,可以使用 $regex 操作符来匹配符合正则表达式的字段值。 例如:假设我们有一个集合名为“users”,包含以下字段:name、username、email,现在我们想要匹配同时包含关键词“John”和“gmail”的 email。 可以使用以下代码进行查询:db.users.find({email: {$regex: ".*John.*", $options: "i"}, email: {$regex: ".*gmail.*", $options: "i"}}); 其中,$regex表示使用正则表达式查询,. 表示任何字符,* 表示零个或多个字符,$options 表示正则表达式选项,i 表示不区分大小写。 请注意,这里使用的是两个键值对 email 字段进行匹配。这是因为,在 MongoDB 中,一个字段不能重复定义,将覆盖之前的定义,而查询要求是同时满足两个条件。 此外,还可以使用 OR 操作符进行多条件查询。例如,查询 name 字段中包含“Kim”或 email 字段中包含“gmail”的记录,可以使用以下代码: db.users.find({$or: [{name: {$regex: ".*Kim.*", $options: "i"}}, {email: {$regex: ".*gmail.*", $options: "i"}}]}); 其中,$or 表示或操作符,将两个包含 name 和 email 字段的查询语句放在数组中,查询时会同时满足两个条件。 总之,在 MongoDB 中进行模糊查询并满足多个条件,可以使用正则表达式或 OR 操作符进行查询。将满足条件的键值对放在查询语句中,可以实现更为复杂的多条件查询
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值