ThinkPHP中各种搜索条件的使用、查询

先存下来,有时间慢慢看
class SelectAction extends Action{
 
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语言实现更加复杂的情况

//==============================================================================
//普通查询
          //$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 到id10的值-------
  //$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('notbetween','4,10');               notbetween
  //-------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.数组形式
//==========================================================================================================
//区间查询   区间查询就是同一字段间 跨值查询 归根到底 还是数组查询查询表达式BETWEEN能代替其中一部分 但是区间查询更灵活 范围更广
//$map['字段名']   =array(第一个条件array('like','%a%'), 第二个条件array('like','%b%'),第三个条件array('like','%c%'), 第三个条件'ThinkPHP',条件间的关系'or 或and'); 
          //------查找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';    字段条件之间的关系
//=========================================================================================================
//复合查询   复合查询是包括区间查询  和 组合查询   先写优先级高的模块然后 __complex压入大模块中
            //---------查询表name为 含有c 2开头 g结尾  其中c结尾的id必须为2-----------
  //$condition="(name like '%c%' andid=2 )or name like '2%' or name like '%g'";查询字符串
//  $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';
          //---------查询表 name为 含有c 2开头  其中c结尾的id必须为2 2开头必须ip是127%  他们必须同时time不为空  -------
//   $condition="(name like '%c%' andid=2 and time!='') or (name like '2%' and ip like '127%' andtime!='')"; 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(字段) 和
          $mo=M('CommonModel:Mvc');
          //$list=$mo->count('id'); 
//==========================================================================================================
//定位查询 getN是一个很好 很灵活的 获取查询结果中部分值的方法 主要其使是 0  可以和limit 互通 
          //$list=$mo->getN(-5);
  //$list=$mo->where('id=11')->Last();
//==========================================================================================================
//动态查询   动态查询 简单也更快速
//         一.getBy动态查询一直快速查询对应字段值 的单条数据的利器
            //$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);
}
}
原文链接:http://blog.sina.com.cn/s/blog_76b9b43501019gel.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值