1.字符串查询:
安全性不高
$User = M("User"); // 实例化User对象
$User->where('type=1 AND status=1')->select();
2.数组查询:
最常用的方式,比较安全
$User = M("User"); // 实例化User对象
$condition['name'] = 'thinkphp';
$condition['status'] = 1;
// 把查询条件传入查询方法
$User->where($condition)->select();
$User = M("User"); // 实例化User对象
$condition['name'] = 'thinkphp';
$condition['account'] = 'thinkphp';
$condition['_logic'] = 'OR';
// 把查询条件传入查询方法
$User->where($condition)->select();
3.对象查询
$User = M("User"); // 实例化User对象
// 定义查询条件
$condition = new stdClass();
$condition->name = 'thinkphp';
$condition->status= 1;
$User->where($condition)->select();
表达式查询
例:
$map['id'] = array('neq',100);
如果配置了DB_LIKE_FIELDS参数的话,某些字段也会自动进行模糊查询:
'DB_LIKE_FIELDS'=>'title|content'
的话,
$map['title'] = 'thinkphp';
就等价于:
title like '%thinkphp%'
数组方式:
$map['a'] =array('like',array('%thinkphp%','%tp'),'OR');
$map['b'] =array('notlike',array('%thinkphp%','%tp'),'AND');
EXP表达式:
exp查询的条件不会被当成字符串,所以后面的查询条件可以使用任何SQL支持的语法,包括使用函数和字段名称。
查询表达式不仅可用于查询条件,也可以用于数据更新,例如:
$User = M("User"); // 实例化User对象
// 要修改的数据对象属性赋值
$data['name'] = 'ThinkPHP';
$data['score'] = array('exp','score+1');// 用户的积分加1
$User->where('id=5')->save($data); // 根据条件保存修改的数据
快捷查询
1.不同字段,相同条件查询
$User = M("User"); // 实例化User对象
$map['name|title'] = 'thinkphp';
// 把查询条件传入查询方法
$User->where($map)->select();
等价于:name= 'thinkphp' OR title = 'thinkphp'
$User = M("User"); // 实例化User对象
$map['status&title'] =array('1','thinkphp','_multi'=>true);
// 把查询条件传入查询方法
$User->where($map)->select();
等价于:
status= 1 AND title = 'thinkphp'
区间查询:
$map['id'] = array(array('gt',3),array('lt',10), 'or') ;
等价于:id>3 || id<10
统计查询:
SQL查询:
读操作:
$Model = new Model() // 实例化一个model对象 没有对应任何数据表
$Model->query("select * from think_user where status=1");
写操作:
$Model = new Model() // 实例化一个model对象 没有对应任何数据表
$Model->execute("update think_user set name='thinkPHP' where status=1");
动态查询:
getBy字段名:(返回符合条件的记录)
$user = $User->getByName('jack');
$userId = $User->getFieldByName('jack','id');
子查询:
1.select方法
2.buildSql方法