ThinkPHP中各种搜索条件的使用、查询
class SelectAction extends Action{
//$mo=M('Mvc');
//-------输出ID等于4的所有字段--------
//$list=$mo->where('id=4')->select();
1.字符串形式
//$list=$mo->where(array('id'=>array('EQ','4')))->select();
2.数组形式
//$conditon=new stdClass();
//$conditon->id=4;
3.对象形式
//-------输出ID不等于4的所有字段--------
//$condition="id!=4";
1.字符串形式
//$conditon['id']=array('NEQ','4');
2.数组形式
//-------like的使用
找用户名以h字母开始的---------
//$condition="name like 'h%'";
1.字符串形式
//$condition['name']=array('like','h%');
2.数组形式
//$condition=array('name'=>array('like','h%'));
2.数组形式另一种写法
//-------BETWEEN的使用 找到id 4 到id 10的值-------
//$condition="id between '4' and '10'";
1.字符串形式
//$condition['id']=array('between','4,10');
2.数组形式
//$condition=array('id'=>array('between','4,10'));
2.数组形式另一种写法
//$condition['id']=array('between',array('4','10'));
2.1三维数组的数组形式
//$condition=array('id'=>array('between',array('4','10')));
2.1三维数组的数组形式另一种写法
//$condition['id']=array('not between','4,10');
not between
//-------in的使用 找到name 是 ccc,ggg,nnn的行---------
//$condition="name in ('ccc','ggg','nnn')";
1.字符串形式
//$condition['name']=array('in','ccc,ggg,nnn');
2.数组形式
//$condition['name']=array('in',array('ccc','ggg','nnn'));
2.1三维数组的数组形式
//-------exp 的使用
找到name 是 ccc,ggg,nnn的行--------
//$condition['name']=array('exp',"in('ccc','ggg','nnn')");
2.数组形式
//------查找id大于3 小于10的行------
//$condition="id>=3 and id<=10";
1.字符串形式
//$condition['id']=array('between','3,10');
2.between
//$condition['id']=array(array('EGT',3),array('ELT',10));
3.区间查询
//$condition['id']=array(array('GT',3),array('LT',10),'or');
//$condition['id']=array('EQ',8);
//$condition['name']=array('EQ','ccccc');
//$condition['_string']="id=2";
就是在后面加上标准的sql where语句
//$condition['_logic']='or';
字段条件之间的关系
//---------查询表 name为 含有c 2开头 g结尾
其中c结尾的id必须为2-----------
//$condition="(name like '%c%' and id=2 )or name like '2%' or name like '%g'";查询字符串
//---------查询表 name为 含有c 2开头
其中c结尾的id必须为2 2开头必须ip是127%
他们必须同时time不为空
-------
$mo=M('CommonModel:Mvc');
//$list=$mo->count('id');
//$list=$mo->getN(-5);
//$list=$mo->where('id=11')->Last();
//$list=$mo->getByname(nnn);
//$list=$mo->getByid('3');
//二. getFieldBy 针对某个字段的值 获取单条数据的单个信息
//$list=$mo->getFieldByid('2','name');
//三. top动态查询 top动态查询和limit能互换
!!!!!!!!此处很奇怪 5要加在括号前面!!!!!!!!
//$list=$mo->top5();
//$list=$mo->where($condition)->select();
dump($list);
function index(){
//thinkphp 查询语言
//
1.普通查询
//
2.区间查询
//
3.组合查询
//
4.复合查询
//
5.统计查询
//
6.定位查询
//
7.SQL查询
//
8.动态查询
// (一).普通查询
//
1.字符串形式
//
'id'>5 and id<9
在SQL语句当中写的基本形式也是字符串形式
//
2.数组形式
//
$user=M('user');
//
$date['username']='aaaa';
//$date['字段名']=array('表达式','查询条件');
//
$liset=$user->where($date)->select();
//
3.对象形式
//
$user=M('user');
//
$condition=new stdClass();
//
$codition->username='aaaa';
//
$list=$user->where($a)->select();
//
查询表达式
//
EQ 等(=)
//
NEQ 不等于(!=)
//
GT 大于(>)
//
EGT 大于等于(>=)
//
LT 小于(<)
//
ELT 小于等于(<=)
//
LIKE 等于SQL like
//
[NOT]ETWEEN 等于SQL的BETWEEN
//
[not] in 查询集合
//
exp 比较特殊 是指使用标准SQL语言 实现更加复杂的情况
//==============================================================================
//普通查询
//==========================================================================================================
//区间查询
区间查询就是同一字段间 跨值查询 归根到底 还是数组查询 查询表达式BETWEEN能代替其中一部分 但是区间查询更灵活 范围更广
//$map['字段名']
= array(第一个条件array('like','%a%'), 第二个条件array('like','%b%'), 第三个条件array('like','%c%'), 第三个条件'ThinkPHP',条件间的关系'or 或 and');
//==========================================================================================================
//组合查询
组合查询 就是跨字段查询
//=========================================================================================================
//复合查询
复合查询是包括区间查询
和 组合查询
先写优先级高的模块 然后 __complex压入大模块中
//
$date['name']=array('like','%c%');
//
$date['id']=2;
//
$date['_logic']='and';
//
$condition['_complex']=$date;
//
$condition['name']=array(array('like','2%'),array('like','%g'),'or');
//
$condition['_logic']='or';
//
$condition="(name like '%c%' and id=2 and time!='') or (name like '2%' and ip like '127%' and time!='')"; 1.字符串形式
//
-------------------
//
$date['name']=array('like','%c%');
2.数组加字符串形式
//
$date['id']=2;
复合查询 是数组查询的一种形式 所有受到数组查询的
//
$date['time']=array('NEQ','');
局限性 每个特殊查询 只能使用一次(_string _query
//
$date['_logic']='and';
_complex)只能使用一次
//
$twda['_complex']=$date;
//
$twda['_string']="name like '2%' and ip like '127%' and time!=''";
//
$twda['_logic']='or';
//
$condition['_complex']=$twda;
//
-------------------
//==========================================================================================================
//统计查询
//
$mo->count('字段'); 总数
//
$mo->max('字段') 最大值
//
$mo->min('字段') 最小值
//
$mo->avg('字段') 平均数
//
$mo->sum(字段) 和
//==========================================================================================================
//定位查询 getN是一个很好 很灵活的 获取查询结果中部分值的方法 主要其使是 0
可以和limit 互通
//==========================================================================================================
//动态查询
动态查询 简单也更快速
//
一.getBy动态查询 一直快速查询对应字段值 的单条数据的利器
}
}