thinkphp mysql查询_thinkphp5中常用数据库查询语句介绍

eb982f14dbb07fa98c0e9ca4b0902780.png

tp_data 数据表

a92520fd60808eff7bb1332d9ba08a53.png

value()$name = Db::name('data')

-> where('id', 16)

-> value('name');

print_r($name);

// 获取 tp_data 数据表中 id = 16,name 字段的值,并打印

// 结果:1111

/** 原生sql语句

>Prepare SELECT `name` FROM `tp_data` WHERE `id` = ? LIMIT 1

>Execute SELECT `name` FROM `tp_data` WHERE `id` = 16 LIMIT 1

*/

column()

获取一列满足条件的数据$list = Db::name('data)

-> where('status', 1)

-> column('name');

print_r($list);

// 从 tp_data 数据表获取一列 status = 1 的 name 字段值

/** 结果:

Array(

[0] => thinkphp

[1] => thinkphp

[2] => thinkphp

[3] => thinkphp

[4] => 7777777777

[5] => thinkphp

[6] => thinkphp

[7] => thinkphp

[8] => thinkphp

)

*/

获取一列满足条件的数据,并以id值为键名$list = Db::name('data)

-> where('status', 1)

-> column('name', 'id');

print_r($list);

// 从 tp_data 数据表获取一列 status=1 的 name 字段值集合

/** 结果:

Array(

[3] => thinkphp

[4] => thinkphp

[5] => thinkphp

[6] => thinkphp

[7] => 7777777777

[8] => thinkphp

[9] => thinkphp

[10] => thinkphp

[11] => thinkphp

)

*/

获取以id为键名的数据集$list = Db::name('data')

-> where('status', 1)

-> column('*', 'id');

print_r($list);

// 从 tp_data 数据表获取一列 status=1 的数据集

/** 结果:

Array(

[3] => Array(

[id] => 3

[name] => thinkphp

[status] => 1

)

[4] => Array(

[id] => 4

[name] => thinkphp

[status] => 1

)

[5] => Array(

[id] => 5

[name] => thinkphp

[status] => 1

)

...

)

*/

聚合查询

count

max

min

avg

sum

统计 data 表的数据$count = Db::name('data')

-> where('status', 1)

-> count();

echo $count;

// 结果:9

统计 data 表的最大 id$max = Db::name('data')

-> where('status', 1)

-> max('id);

echo $max;

// 结果:11

简单查询$result = Db::name('data')

-> where("id > :id and name like :name",

[

'id' => 10,

'name' => "%php%"

])

-> select();

print_r($result);

/** 结果:

Array(

[0] => Array(

[id] => 11

[name] => thinkphp

[status] => 1

)

)

*/

/** 原生sql语句:

>Prepare SELECT * FROM `tp_data` WHERE (id > ? and name like ?)

>Execute SELECT * FROM `tp_data` WHERE (id > '10' and name like '%php%')

*/

日期查询

日期类型int,时间戳格式

查询时间大于 2016-1-1 的数据$result = Db::name('users')

-> whereTime('reg_time', '>', '2016-1-1')

-> select();

print_r($result);

/** 原生sql语句:

>Prepare SELECT * FROM `tp_users` WHERE `reg_time` > ?

>Execute SELECT * FROM `tp_users` WHERE `reg_time` > 1451577600

*/

查询本周$result = Db::name('users')

-> whereTime('reg_time', '>', 'this week')

-> select();

print_r($result);

// 从本周星期一开始

查询最近两天添加的数据$result = Db::name('users')

-> whereTime('reg_time', '>', '-2 days')

-> select();

print_r($result);

查询创建时间在 2016-1-1 ~ 2017-7-1 的数据$result = Db::name('users')

-> whereTime('reg_time', 'between', ['2016-1-1', '2017-7-1'])

-> select();

print_r($result);

/** 原生sql语句:

>Prepare SELECT * FROM `tp_users` WHERE `reg_time` BETWEEN ? AND ?

>Execute SELECT * FROM `tp_users` WHERE `reg_time` BETWEEN 1451577600 AND 1483200000

*/

查询今天的数据

昨天:yesterday

本周:week

上周:last week$result = Db::name('users')

-> whereTime('reg_time', 'today')

-> select();

print_r($result);

分块查询Db::name('data')

-> where('status', '>', 0)

-> chunk(2, function($list) {

foreach($list as $data) {

//处理2条记录

}

});

/** 原生sql语句:

>Prepare SELECT * FROM `tp_data` WHERE `status` > ? ORDER BY `id` asc LIMIT 2

>Execute SELECT * FROM `tp_data` WHERE `status` > 0 ORDER BY `id` asc LIMIT 2

>Close stmt

>Prepare SELECT * FROM `tp_data` WHERE `status` > ? AND `id` > ? ORDER BY `id` asc LIMIT 2

>Execute SELECT * FROM `tp_data` WHERE `status` > 0 AND `id` > 4 ORDER BY `id` asc LIMIT 2

>Close stmt

>Prepare SELECT * FROM `tp_data` WHERE `status` > ? AND `id` > ? ORDER BY `id` asc LIMIT 2

>Execute SELECT * FROM `tp_data` WHERE `status` > 0 AND `id` > 6 ORDER BY `id` asc LIMIT 2

>Close stmt

...

>Prepare SELECT * FROM `tp_data` WHERE `status` > ? AND `id` > ? ORDER BY `id` asc LIMIT 2

>Execute SELECT * FROM `tp_data` WHERE `status` > 0 AND `id` > 16 ORDER BY `id` asc LIMIT 2

>Close stmt

>Prepare SELECT * FROM `tp_data` WHERE `status` > ? AND `id` > ? ORDER BY `id` asc LIMIT 2

>Execute SELECT * FROM `tp_data` WHERE `status` > 0 AND `id` > 17 ORDER BY `id` asc LIMIT 2

>Close stmt

*/

改进$p = 0;

do {

$result = Db::name('data') -> limit($p, 2) -> select();

$p += 2;

//处理数据

} while(count($result) > 0);

推荐教程:《TP5》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值