mysql block chunk_关于数据库查询的chunk方法

namespace app\index\controller;

use think\Config;

use think\Db;

class Index

{

public function index()

{

$this->DBconnect();        //1、连接数据库

$this->DBQuery();        //2、使用查询语句

$this->DBChunk();        //3、数据集分批处理

}

function DBconnect(){

//1、连接数据库

//        $dbcon = Db::connect();//直接连接 参数在配置文件里配置 如果使用了自定义database配置,那么优先使用自定义配置的文件,如果没有,再使用默认的database配置

//        $dbcon = Db::connect("mysql://root:@127.0.0.1:3306/itcast#utf8");//数据库类型://用户名:密码@数据库地址:数据库端口/数据库名#字符集

//        $dbcon = Db::connect(

//            [

//                'type'            => 'mysql',

//                'hostname'        => '127.0.0.1',

//                'database'        => 'itcast',

//                'username'        => 'root',

//                'password'        => '',

//                'hostport'        => '',

//                'debug'           => true

//            ]

//        );//直接写入配置

$dbcon = Db::connect(Config::get('db_config1'));//使用了自定义配置中的自定义db_config1

dump($dbcon);

}

function DBQuery(){

//2、使用查询语句

//查询book_list中id=1的记录

//        $find_query=Db::name('list')->where('id',1)->find();     //配置了表前缀 则使用name(未配置表前缀使用table方法),省略了book_

//查询book_list中id=1的记录

$find_query=Db::table('book_list')->where('id',1)->find();     //find 方法返回结果,不存在返回null

//查询book_list中id=1的记录

$selete_query=Db::table('book_list')->where('id',1)->select();     //selete 方法返回结果集,不存在返回空数组

//查询book_list中id=1的记录中某个字段的值 (相当于某个表的单元格,非一行数据)

$value_query = Db::table('book_list')->where('id',1)->value('bname');//value方法不存在返回null, 取出ID为1的记录,再查找字段 书名对应的值

//column 返回数组 查询某一个字段对应的所有记录

$column_query = Db::table('book_list')->where('id',2)->column('bname');//查询ID为2的书名

//        $column_query = Db::table('book_list')->column('bname');//查询表中书名的一列的所有值,返回一个数组

dump($find_query);

dump($selete_query);

dump($column_query);

}

function DBChunk(){

//3、数据集分批处理

/**该方法一次获取结果集的一小块,然后填充每一小块数据到要处理的闭包

*比如数据库有一万条记录,每页显示100条

*则可以使用chunk分批处理,每次处理100条后分页,再进行处理

*/

/**

* 例:book_list 表中现在有5条数据

* 我们分3页

* 则每页有2条数据

* 所以 chunk(2,回调函数);

* 在回调函数中,foreach进行遍历处理

*/

Db::table('book_list')->chunk(2,function ($results){

foreach ($results as $v){

//传入$results数组用来遍历,foreach则根据$results的长度来判断需要循环几次,将每一次遍历的成员再赋值给变量$v,以供后续进行使用

//$v表示2条中的其中一条,此处$v是一条记录,是数组变量

dump($v);//打印数组 输出遍历所处的一条记录

}

echo '-----------------------------------分页----------------------';

});

//与上述方法相同。只不过回调函数不在方法内处理,将回调函数交给PageSplit方法

Db::table('book_list')->chunk(2,'pageSplit');

}

function pageSplit($result){

return false;

}

}

顺便分享一下自己看了这一节视频所做的笔记!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值