普通查询
#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(键值)