加入$map['_logic'] = 'OR'
或
$map['id|receiverid'] = array(session('uid'),array('in', implode(",",$idset)),'_multi'=>true)
以上方法等效。
当且与或并存时可以用复合查询,如以下多了一个name
$map['receiverid'] = session('uid')
$map['id'] = array('in', implode(",",$idset))
$map['_logic'] = 'OR'
$where['name'] = 'abc'
$where['_complex'] = $map
M('message') ->where($where)->select()
将生成:
WHERE (`receiverid` = 1 OR `id` IN ('13','12','10','9')) AND `name`='abc'。
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/>"
//等等
}
?>
增加一个字段或者将这个字段直接改为int型值保存使用0,1,2,3,4.....10表示你的用户等级,在输出时加上Lv前缀就可以了,
这样的话,你可以直接在sql语句的where中指定条件,
比如说你的指定的这个字段名为level
则你可以
select * from members where level>3
其中level字段就是刚才转换的字段。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)