thinkPHP增删改查

thinkPHP

数据库操作

实例化模型

1.实例化基础模型model
$user = M('user');
2.实例化用户自定义模型
$user = D('user);
3.实例化空模型
1.读取 (select)
$data = M()->query('select * from 表名');// 表名要加上表前缀
2.写入(update,insert)
$data= M()->execute('update 表名 set  字段名=值');

查询

1.select查询
$data = M('user')->select();
2.使用字符串进行查找
$data = M('user')->where('id=1')->select();
3.使用数组方式进行查询
$where['id'] = 2;
$where['username'] = 'xiaoming';
$where['_logic'] = 'or';//默认为and 可以改为 or
$data = M('user')->where($where)->select();
4.表达式查询
gt lt between....
$where['字段名'] = array('表达式',查询条件);
$where['id'] = array('gt',1); //大于1
$where['id'] = array('between','1,8');//1到8之间
$where['id'] = array('in','2,4');//2到4
$where['username'] = array('like','%aa%');//模糊查询
$where['username'] = array('like',array('%aa%','%bbb%'));//多条件模糊查询
$where['id'] = array(array('gt',1),array('lt',10));/./多条件查询
$where['id'] = array(array('gt',1),array('lt',10),'or');//多条件查询
5.统计用法
count统计数量
$data = M('user')->count();
max获取最大值(必须传入要统计的字段名)
$data = M('user')->max('id');
min最小值(必须传入要统计的字段名)
$data = M('user')->min('id');
avg平均值(必须传入要统计的字段名)
$data = M('user')->avg('id');
sum求和(必须传入要统计的字段名)
$data = M('user')->sum('id');

添加

1.添加一条数据
$data = array('字段名1'=>'值1','字段名2'=>'值2',...);
M('user')->add($data);
2.添加多条数据
$data = array(
0=>array('字段名1'=>'值1','字段名2'=>'值2',...),
1=>array('字段名1'=>'值1','字段名2'=>'值2',...)
.
.
.
);
M('user')->addAll($data);
M()->getLastsql();//获取最后一条执行的sql语句

更新

$update['字段名1'] = 值1;
$update['字段名2'] = 值2;
M('user')->where('id=1')->save($update);

删除

M('user')->where('id=1')->delete();
另一种写法
M('user')->delete(1);//delete(这里只能填写主键的值)

连贯操作

order排序
order排序 order(字符串) 多个条件的话用逗号隔开    正序acs   倒序desc
$data = M('users')
-> order('score desc,id asc')
-> select();
field
field($string,false) $string传入多个字段用英文逗号分开
$data = M('users')
-> field('user_id,user_money',true)
->order('score desc,id asc')
-> select();
第二参数加true取参数一的字段,false排除第一个参数里的字段查询.
也就是过滤参数一的字段进行查询
limit
limit(start,length)从第几条开始取,取几条
$data = M('users')
-> field('user_id,user_money',true)
->order('score desc,id asc')
-> limit(2,5)
-> select();
page
page(页码,每页的条数=20)第几页,每页多少条默认20条
$data = M('users')
-> field('user_id,user_money',true)
->order('score desc,id asc')
-> page(1,5)
-> select();
group
group()分组操作
$data = M('users')
  -> field('score,count(*) as total')
-> having('score>20')
  -> grounp('score')
-> select();
给users表里面的成绩进行分组,取出二维数组,一维数组里有score和别名为total的数据,total是成绩为score的这个组有几个人,加上having条件是成绩大于20以上的有多少组,每个组里是score为多少,total为这个组有几个人

多表查询

table方法
多表查询 table方法 table(array('表名'=>'别名'))表名需要加前缀
$data = M()
-> table(array('ty_user'=>'user','ty_store'=>'store'))
-> where('user.user_id = store.user_id')
-> select();
join方法
join()支持字符串和数组      默认是左关联
$data = M('users')
-> join('ty_store On ty_store.user_id = ty_users.user_id')
-> select();
右关联
$data = M('users')
-> join('inner join ty_store On ty_store.user_id = ty_users.user_id')
-> select();


$data = M('users')
-> join('Right join ty_store On ty_store.user_id = ty_users.user_id')
-> select();
数组
$data = M('users')
-> join(array('ty_users On ty_user.user_id = ty_store.user_id'))
-> select();
union查询
多表查询 union查询 union('string array',true/false)默认false  默认不过滤重复


$data = M('users')
-> field('user_name,id')
-> union('select user_name,id from ty_user2')
-> select();
相同的字段,字段类型也必须是一样的


$data = M('users')
  -> field('user_name')
  -> union(array('field' => 'user_name','table' => 'user2'))
  -> union(array('field' => 'user_name','table' => 'user3'))
  -> select();

过滤查询

distinct
$data = M('users')
  -> distinct(true)
  -> field('score')
  -> order('score asc')
-> select();

打印sql语句为原生sql

echo $User->_sql();

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值