php查询及多条件查询
单条件查询:
1.先要有一张表,显示出表中的数据:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body> <table border="1" cellspacing="0" cellpadding="0"> <tr> <td width="200">编号</td> <td width="200">姓名</td> <td width="200">电话</td> <td width="200" >分组</td> </tr> <?php $db = new mysqli("localhost","root","12345678","heiheihei"); $sql = "select * from contacts"; $r = $db->query($sql); //传值 while ($attr = $r->fetch_row()) { echo " <tr> <td>{$attr[0]}</td> <td>{$attr[1]}</td> <td>{$attr[2]}</td> <td>{$attr[3]}</td> </tr>"; } ?> </table> </body> </html>
上图:
啥都没改的一张表
2.再来个from表单,让用户输入,点击查询:
<form action="shouye.php" method="post"> <div> 输入名字:<input type="text" name="name"/> <input type="submit" value="查询"/> </div> </form>
如图:
3.建立关键字查询:
<?php //实现两个逻辑 //1.如果没有post数据.查所有的 //2.如果有post数据.根据条件查 $db = new mysqli("localhost","root","12345678","heiheihei"); //连接数据库 $tj = " 1 = 1 "; $name=""; //恒成立,如果没有写数据,那就让条件等于1=1,这个条件是查找所有的数据 //如果你写入数据,按照数据查 if(!empty($_POST)) { $name = $_POST['name']; $tj = " name like '%{$name}%'"; } //将条件拼接到SQl语句 $sql = "select * from contacts WHERE {$tj}"; echo $sql; //查出来 $r = $db->query($sql); //传值 if($r) //开始判断 { //$attr已经接收到了值,现在只需要获取他的索引就行了 while ($attr = $r->fetch_row()) { //关键字特殊查询 $str = str_replace($name,"<mark>{$name}</mark>",$attr[1]); //查找替换如ctrl+f //substr_replace(); 在指定位置替换 //substr(); 截取字符串 $gname = "select gname from groups WHERE gid='{$attr[3]}'"; //分组表中的gid,和我点击的 $nresult = $db->query($gname); $gname = $nresult->fetch_row(); $nation = $gname[0]; echo " <tr> <td>{$attr[0]}</td> <td>{$str}</td> <td>{$attr[2]}</td> <td>{$nation}</td> ?>
图:
多条件查询:
前面照旧;
出了php的语句:
<?php //实现两个逻辑 //1.如果没有post数据.查所有的 //2.如果有post数据.根据条件查 $db = new mysqli("localhost","root","12345678","heiheihei"); //连接数据库 $tj1 = " 1 = 1 "; $tj2 = " 1 = 1 ";//两个条件的恒等 $name=""; //恒成立,如果没有写数据,那就让条件等于1=1,这个条件是查找所有的数据 //如果你写入数据,按照数据查 if(!empty($_POST["name"])) //第一个条件的判断(用到了模糊查询) { $name = $_POST['name']; $tj1 = " name like '%{$name}%'"; } if(!empty($_POST["tel"])) { $tel = $_POST["tel"]; $tj2 = "tel = '$tel'"; } //将条件拼接到SQl语句 $sql = "select * from contacts WHERE {$tj1} AND {$tj2}";
效果图:
这样:有几个条件就做几个条件变量,第一个条件不为空就执行的第一个条件,第二个条件不为空执行的第二个条件,两个都为空就是查寻所有的数据