一。普通查询方式
1.字符串查询
例如:查询姓名为“程欢”并且 年龄为“23”的用户的信息
$arr=$m->where("name='程欢' and age=23")->find(); //
find()返回一条,使用select()能够返回多条数据
//
$arr=$m->where("name='程欢' and age=23")->select();
2.数组查询
或者
$data['age']=23;
$data['name']='程欢'; //find()返回一条,使用select()能够返回多条数据
$arr= $m->where($data)->find(); //where里面存放的数组($data)
默认的关系是and
的关系
// $arr= $m->where($data)->
select()
;
var_dump($arr);
如果想使
用or的关系
查询姓名为“程欢"或者 年龄为“23”的用户的信息
$data['age']=23;
$data['name']='程欢';
$data['_logic']='or';
$arr= $m->where($data)->find(); //find()返回一条,使用select()能够返回多条数据
//$arr= $m->where($data)-> select() ;
var_dump($arr);
二。表达式查询方式
GT--大于 LT---小于 EQ---等于 EGT---大于等于 ELT----小于等于 NEQ---不等于 //不区分大小写
LIKE---模糊查询 ONTLIKE---查询不匹配的
1.查询id
大于6的数有人员信息
var_dump($arr);$data['id']=array( 'GT',6);$arr= $m->where($data)->select();
2. 查询id
小于6的数有人员信息
$data['id']=array( 'LT',6);$arr= $m->where($data)->select();
var_dump($arr);4.查询id 大于等 于6的数有人员信息var_dump($arr);$data['id']=array( 'EGT',6);$arr= $m->where($data)->select();5.查询id 小于 等于6的数有人员信息var_dump($arr);$data['id']=array( 'ELT',6);$arr= $m->where($data)->select();6.查询id 不等于 6 的数有人员信息var_dump($arr);$data['id']=array( 'NEQ',6);$arr= $m->where($data)->select();7 .模糊查询 LIKE关键字查询姓名中 包含”程欢“的人员信息$data['name']=array( 'LIKE','%程欢%');
$arr= $m->where($data)->select();var_dump($arr);
8 .查询姓名中 不包含”程欢“的人员信息$data['name']=array( 'NOTLIKE','%程欢%'); // N OTLIKE中间不能有空格$arr= $m->where($data)->select();var_dump($arr);
9.多条件模糊匹配查询名字中包含”程欢“ 或者名字中包含”王“的人员信息 //默认为or的关系$data['name']=array( 'LIKE',array('%程欢%','%王%'));$arr= $m->where($data)->select();var_dump($arr);
查询名字中包含”程欢“ 并且名字中包含”王“的人员信息$data['name']=array( 'LIKE',array('%程欢%','%王%'),'and');$arr= $m->where($data)->select();var_dump($arr);
三,区间查询(类似in between ...and)查询id 在5和7之间的人员信息查询id 不在5和7 之间的人员信息$data['id']=array ('between',array(5,7));$arr= $m->where($data)->select();var_dump($arr);
$data['id']=array( 'not between',array(5,7)); //not between之间必须有空格$arr= $m->where($data)->select();var_dump($arr);
查询id 为6,7,10 的用户信息
$arr= $m->where($data)->select();$data['id']= array('in',array(6,70,10));
var_dump($arr);
查询id 不为6,7,10的用户信息
$data['id']=array ('not in',array(6,70,10)); //not in之间必须有空格
查询id 大于4小于10的人员信息$data['id']=array(array('GT',4),array('LT',10)); //默认使用and方式,
查询id 大于4或者(or)小于10的人员信息$data['id']=array(array('GT',4),array('LT',10),'or');
查询 id大于4或者小于10名字中包含"程"或者"王"$data['id']=array(array('GT',4),array('LT',10),'or');$data['name']=array(array('like','程'),array('like','王'),'or')// SQL语句SELECT * FROM `tp_user` WHERE ( (`id` > 4) OR (`id` < 10) ) AND ( (`name` LIKE '%程%') OR (`name` LIKE '%王%') )四。统计查询1.count --- 获取个数2.max ---- 获取最大数3.min ---- 获取最小数4.avg ---- 获取平均数5.sum ---- 获取总和1.获取用户的总数$m=M("User"); //实例化一个对象$c=$m->count() //调用count()方法echo $c;
2.获取用户名为"程欢"的用户数量$c=$m->where("name='程欢'")->count();echo $c;或者$data['name']='程欢';$c=$m->where($data)->count();
3.获取表中ID最大的值$c=$m->max('id');4 .获取表中ID最小的值$c=$m->min('id');echo $c;
五。SQL直接查询1.使用query ----主要处理读取数据的$m=M( ); //声明一个空的对象$result= $m->query("select * from tp_user where id>5"); //执行成功的话返回一个结果集(数组) ,失败返回falsevar_dump($result);
2.使用execute --用于更新和输入操作$m=M( ); //声明一个空的对象$result= $m->execute("insert into tp_user(name) values('chenghuan')"); //执行成功的话返回影响的行数, 失败返回falsevar_dump($result);
如果在UserAction.class.php中新建一个search()方法,当最后使用$this->disaplay()方法调用模板的时候如果不定义的话就$where['age']=array('EQ',$_POST['age']);会自动查找tpl下User下的serach模板,如果改为$this->display('index');则会查找 tpl下User下的index模板
模糊查询:查询姓名为(表单提交)或者 年龄为(表单提交)$where['name']=array('like',"%{$_POST['username']}%");
//$where['_logic']='or'; //如果没有则为 查询姓名为(表单提交)并且 年龄为(表单提交)$m=M("User");$arr=$m->where($where)->select();$this->assign('data',$arr);$this->display('index');