多条件?判断就是了啊,然后是sql语句的连接,一个条件连接一个字符串。主要就是要有一个判断是where 还是and 如果是第一个条件,就是where如果不是第一个条件,就是and
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、成都微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了京山免费建站欢迎大家使用!
$sql="select * from table where (sex="'".$_POST['sex']."'") and (aihao="'".$_POST['aihao']."'") and (dizhi="'".$_POST['dizhi']."') order by addtime desc"
先向大家说明需求:按照系统的要求,将通过部门名称、员工姓名、PC名称、IP地址等等字段来进行组合查询从而得到想要的数据结果。那么,为了简单起见,我们用两个条件(部门名称、员工姓名)的组合查询来向大家说明这一技术技巧。当只输入部门名而员工姓名为空值时,那么部门内所有员工信息将被呈现,只有当同时限制部门与员工姓名时,才能查询出唯一信息。
那就让我们开始。
首先建立查询页面search.php,不同于上次单一条件查询,这次需要两个条件的组合进行查询。
html
body
h3查询/h3
form action="search_result.php" method="POST"
部门名称:input type="text" size=25 name="depart" value="" brbr
员工姓名: input type="text" size=25 name="ename" value="" brbr
input type="submit" name="提交" value="提交"
/form
/body
/html
和上次一样,我们将depart与ename的值通过Post的方法传递给search_result.php文件。
然后便到了这次主题的关键,search_result.php文件如何接受这两个参数值,并判断当其中一个字段为空值时,如何将其排除查询条件。
怎么理解上面这句话,举例子来说,如果我们单纯地将接收参数的查询语句写成 select * from info where depart='部门值参数' and ename='员工姓名参数' 的话,那么如果其中一个参数为空时我们就将得到 select * from info where depart='技术部' and ename='' ,显然,这样的查询很有可能返回空的结果,因为这句查询语句的意思就是,查询所有技术部没有姓名的人的数据,这不是很荒唐么,倒过来如果是 select * from info where depart='' and ename='sunec' ,那么它的意思就是查询员工姓名为sunec但是不属于任何部门的人,那自然也是查询不到结果的。
正确的做法应该是,在查询语句中过滤掉那个为空值的的参数。比如,当输入部门名时应该得到 select * from info where depart='技术部' 。这样,查询语句的意思就变成查询所有部门为技术部员工的信息了,这就是了。
?php
$link =mysql_connect("localhost","root","管理员密码");
mysql_select_db("infosystem", $link);
?
?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----------------
mysql_query("SET NAMES GB2312");
$rs = mysql_query($q, $link);
echo "table";
echo "trtd部门/tdtd员工姓名/td/tr";
while($row = mysql_fetch_object($rs)) echo "trtd$row-depart/tdtd$row-ename/td/tr";
echo "/table";
mysql_close($link);
?
注释1:接收search.php通过post传递出的参数,把两个参数分别存储入变量:depart和ename。
注释2:判断参数是否为空,如果为空,不作任何操作。如果有参数传出,则生成相应SQL语句。
注释3:用追加的方法生成SQL语句。
注释4:生成数据集,显示数据,最后关闭数据库连接。
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"
titleSQL多条件查询示例/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
/selectbr/
面积: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/";
//等等
}
?
你在第一行,加一行
header('Content-Type: text/html; charset=utf-8');
如果加了以后还是乱码,那你在notpad++里的菜单栏上,点“格式”,点“以UTF-8,无BOM格式编码”,乱码问题就解决了。
SELECT * FROM `表名` WHERE bookid=22
获取BOOKID为22的记录,输出$uid=
if(strpos($uid,"2")!==false):echo"包含";else:echo"不包含";endif;
判断UID中是否含有2
MYSQLI方法统计数量
$num=mysqli_num_rows(mysqli_query($mysqli,"SELECT id FROM `表名` where pinglun=1"));
统计该表中pinglun=1的记录数量