ThinkPHP数据查询条件及方法的使用

普通查询

#1.字符串形式
//'id'>5 and id<9  在SQL语句当中写的基本形式也是字符串形式
   $user=M('user’);
   $str = “‘id’> 5 and ‘id' <9”;
   $liset=$user->where($str)->select();
#2.数组形式
    $user=M('user');
    $date['username']='aaaa';  
    $liset=$user->where($date)->select();
#3.对象形式
    $user=M('user');
    $condition= new stdClass();
    $codition->username='aaaa';
    $list=$user->where($codition)->select();
#Thinkphp 逻辑判断符号

EQ 等(=)
    说明:$str eq 0 等于  $str == 0
    使用:where(array(’uid’=>array(‘eq’,0)))
NEQ 不等于(!=)
    说明:$str neq 0 等于  $str != 0
    使用:where(array(’uid’=>array(‘neq’,0)))
GT 大于(>)
    说明:$str gt 0 等于  $str > 0
    使用:where(array(’uid’=>array(‘gt’,0)))
EGT 大于等于(>=)
    说明:$str egt 0 等于  $str >= 0
    使用:where(array(’uid’=>array(‘egt’,0)))
LT 小于(<)
    说明:$str lt 0 等于  $str < 0
    使用:where(array(’uid’=>array(‘lt’,0)))
ELT 小于等于(<=)
    说明:$str elt 0 等于  $str <= 0
    使用:where(array(’uid’=>array(‘elt’,0)))
LIKE 等于SQL like
    说明:一般用于模糊匹配 % 通配符
    使用:where(array(’name’=>array(‘like’,”%”.$keyword.”%”)))
    #上方代码 查询名称中 包含 $keyword 的内容
[NOT]BETWEEN 等于SQL的BETWEEN
    说明:用于区间判断, not between 筛选不再此范围内的所有数据
    使用:where(array(’uid’=>array(‘between’,array(1,3))));
    #上方代码 查询 uid 在 1-3之间的所有数据
[not] in 查询集合
    说明:包含语法 与php中的 in_array() 一样
    使用:where(array(’uid’=>array(‘in’,array(1,3,5,6))));
    #上方代码 查询 uid值 包含在 数组 array(1,3,5,6)
exp 比较特殊 - 指使用标准SQL语言
    例句:$map['id']  = array('exp','between  1 and 3’);
    说明:array(‘exp’,”这里书写标准的SQL语句”)

组合查询( 组合查询 & 跨字段查询)

$condition['id']=array('EQ',8);
$condition['name']=array('EQ','ccccc');
$condition['_string']="id=2";  就是在后面加上标准的sql where语句
$condition['_logic']='or';    字段条件之间的关系

复合查询(复合查询是包括区间查询、组合查询 。

顺序:先写优先级高的模块 然后 __complex压入大模块中)

#查询字符串
$condition="(name like '%c%' and id=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’;
$condition="(name like '%c%' and id=2 and time!='') or (name like '2%' and ip like '127%' and time!='')"; 
                                                            
#复合查询是数组查询的一种形式(要复合数组查询的标准)         
#限制每个特殊查询只能使用一次(_string _query _complex)。                                                   
$twda['_complex']=$date;
$twda['_string']="name like '2%' and ip like '127%' and time!=''";
$twda['_logic']='or';
$condition['_complex']=$twda;

#_logic  语句或数组之间的连接条件。 or 或 and
#_string 跟在查询条件后添加的SQL语句
#_complex 完整的条件查询方法

统计查询

#count() 方法用于统计数据行数。
$userCount2 = $Dao->where('uid > 10')->count();

#max() 方法用于统计某个字段最大数据。
$maxScore = $Dao->max('score');

#min() 统计某个字段最小数据。
$minScore = $Dao->where('score>0')->min('score');

#avg() 统计某个字段平均数据。
$avgScore = $Dao->avg('score');

#sum() 统计某个字段数据之和。
$sumScore = $Dao->order('score DESC')->limit('10')->sum('score');

特殊查询

#字段为name,下面可查询 name="king"或name="weill"的数据:
$where['name'] = array("king","weill",'or');

#字段为name,nick,可查询name="我"或nick="我"的数据
$where['name|nick'] = array('eq','我');

#合并两个字段组合成一个临时字段concat函数,用于特殊排序
$list=$menu->field("id,name,pid,path,concat(path,'-',id) as bpath")->order('bpath')->select();

query()查询与execute()执行

query()执行的是查询(select)的SQL语句

$list = M()->query(‘输入完整的SQL语句');

execute()执行的是插入(insert)和修改(update)的SQL语句。execute()方法将返回影响的记录数

$list = M()->execute(‘输入完整的SQL语句');

Thinkphp 查询方法列表

#完整的查询方法 以 select为例
$list = M(“数据库名或模块名”)->field("id, name")->where()->order("id desc")->limit(’0,30‘)->select();
#field()    要指定读取的字段使用英文逗号分隔,系统仅会读取设置的字段
#order()    指定读取出来数组以哪一个字段进行排序,可设置多个。
#limit()    指定读取的数据数量输入一个数值从0开始读取,2个数值代表开始和结束。

查询形式

#select() 查询读取列表返回值是array()二维数组

#find()   查询符合条件的单条数据并输出 array() 一维数组

#getField() 获取结果的指定字段
    例:
    getField(‘id’) 读取结果的id 输出为字符串
    getField(‘id’,true)  读取结果的id 输出为数组
    getField(‘id,name’)  输出为数组 id 的值将会成为 key(键值)  

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值