1.php查询数据,查询数据 - ThinkPHP 5.1 完全开发手册

基本查询

查询单个数据使用find方法:

// table方法必须指定完整的数据表名

Db::table('think_user')->where('id',1)->find();

最终生成的SQL语句可能是:

SELECT * FROM `think_user` WHERE `id` = 1 LIMIT 1

find 方法查询结果不存在,返回 null,否则返回结果数组

如果希望在没有找到数据后抛出异常可以使用

// table方法必须指定完整的数据表名

Db::table('think_user')->where('id',1)->findOrFail();

如果没有查找到数据,则会抛出一个think\db\exception\DataNotFoundException异常。

查询多个数据(数据集)使用select方法:

Db::table('think_user')->where('status',1)->select();

最终生成的SQL语句可能是:

SELECT * FROM `think_user` WHERE `status` = 1

select 方法查询结果是一个二维数组,如果结果不存在,返回空数组

如果希望在没有查找到数据后抛出异常可以使用

Db::table('think_user')->where('status',1)->selectOrFail();

如果没有查找到数据,同样也会抛出一个think\db\exception\DataNotFoundException异常。

如果设置了数据表前缀参数的话,可以使用

Db::name('user')->where('id',1)->find();

Db::name('user')->where('status',1)->select();

如果你的数据表没有设置表前缀的话,那么name和table方法效果一致。

在find和select方法之前可以使用所有的链式操作(参考链式操作章节)方法。

默认情况下,find和select方法返回的都是数组,区别在于后者是二维数组。

助手函数

系统提供了一个db助手函数,可以更方便的查询:

db('user')->where('id',1)->find();

db('user')->where('status',1)->select();

db方法的第一个参数的作用和name方法一样,如果需要使用不同的数据库连接,可以使用:

db('user','db_config1')->where('id', 1)->find();

值和列查询

查询某个字段的值可以用

// 返回某个字段的值

Db::table('think_user')->where('id',1)->value('name');

value 方法查询结果不存在,返回 null

查询某一列的值可以用

// 返回数组

Db::table('think_user')->where('status',1)->column('name');

// 指定id字段的值作为索引

Db::table('think_user')->where('status',1)->column('name','id');

如果要返回完整数据,并且添加一个索引值的话,可以使用

// 指定id字段的值作为索引 返回所有数据

Db::table('think_user')->where('status',1)->column('*','id');

column 方法查询结果不存在,返回空数组

数据分批处理

如果你需要处理成千上百条数据库记录,可以考虑使用chunk方法,该方法一次获取结果集的一小块,然后填充每一小块数据到要处理的闭包,该方法在编写处理大量数据库记录的时候非常有用。

比如,我们可以全部用户表数据进行分批处理,每次处理 100 个用户记录:

Db::table('think_user')->chunk(100, function($users) {

foreach ($users as $user) {

//

}

});

// 或者交给回调方法myUserIterator处理

Db::table('think_user')->chunk(100, 'myUserIterator');

你可以通过从闭包函数中返回false来中止对后续数据集的处理:

Db::table('think_user')->chunk(100, function($users) {

foreach ($users as $user) {

// 处理结果集...

if($user->status==0){

return false;

}

}

});

也支持在chunk方法之前调用其它的查询方法,例如:

Db::table('think_user')

->where('score','>',80)

->chunk(100, function($users) {

foreach ($users as $user) {

//

}

});

chunk方法的处理默认是根据主键查询,支持指定字段,例如:

Db::table('think_user')->chunk(100, function($users) {

// 处理结果集...

return false;

},'create_time');

并且支持指定处理数据的顺序。

Db::table('think_user')->chunk(100, function($users) {

// 处理结果集...

return false;

},'create_time', 'desc');

chunk方法一般用于命令行操作批处理数据库的数据,不适合WEB访问处理大量数据,很容易导致超时。

大批量数据处理

如果你需要处理大量的数据,可以使用新版提供的游标查询功能,该查询方式利用了PHP的生成器特性,可以大幅减少大量数据查询的内存占用问题。

$cursor = Db::table('user')->where('status', 1)->cursor();

foreach($cursor as $user){

echo $user['name'];

}

cursor方法返回的是一个生成器对象,user变量是数据表的一条数据(数组)。

JSON类型数据查询(mysql)

// 查询JSON类型字段 (info字段为json类型)

Db::table('think_user')

->where('info->email','thinkphp@qq.com')

->find();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[原创]关于在VS解决方案下使用文件夹管理多个项目层次关系的说明

由于所创建的应用项目或类库项目较多,于是将这些类库放到一个文件夹下。在VS解决方案下确实能看到一个文件夹下多个类库项目这种层次关系。如下图所示: 但打开“我的电脑”,看到的只有类库,并未看到维护层次关系的文件夹。如下图所…

java进阶(二)-java小干货

java一些精干知识点分享 2. java小干货2.1循环遍历2.2可变参数2.3 list和数组转化2.3.1 数组转list2.3.2 list转数组 2.4 值传递和地址传递2.4.1值传递2.4.2 地址传递2.4.3易错点总结 2.5 数组数组帮助类Arrays 2.5 基本数据类型和包装类2.5集合2.6文件流2.7java代码块、内部类…

机器直觉

来源:专知当前以深度学习代表的人工智能技术所能解决的问题往往需要具有大量可以借鉴学习的训练 集, 同时要求所获取的信息是完备的. 但在复杂时变的真实应用环境中, 采集到的数据往往包含大量 噪声与不确定性, 且仅包含环境的局部信息, 导致了基于深度学习的人工智…

vb.net读取excel并写入dgv_读取PDF中的表格写入EXCEL?30行代码搞定

办公自动化系列1现在,各类数据分析的书籍,都可以在网上找到PDF版本;同时,百度文库、各类数据统计文库、行业研究等众多论文报告,是通过PDF的形式去展示输出的;但是,令人都头疼的是,各…

reshape [] matlab,matlab之reshape函数

简单来说,reshape(A,m,n)就是用来把原矩阵的元素,按照列读取排成一行,然后按照指定的m*n矩阵再按列放好。比如原矩阵为A 1 2 34 5 67 8 910 11 12我们先给他按列拍成一排(变相说也就是看看reshape(A,1,12))的效…

第一阶段 07类与对象

类与对象 (1)面向对象(简称:OOP,全称:Object Oriented Programming) 面向对象是一种编程思想,相对面向过程而言 面向过程 强调的是功能的过程 面向对象 强调功能的结果,不…

英媒:人工智能终于接近人类智能了吗?

文章来源:金融时报作者:John Thornhill图片来源:网络编辑:江上波摘要:GPT-3被誉为人工智能领域的重大突破,有人认为它甚至显示出初步意识迹象,另一些人则指出GPT-3存在可笑的缺陷。它可以大量炮…

大创中期报告怎么写_课题研究中期报告怎么写?这篇范文很说的很详细

中期报告一般要求1.课题简介:课题由来、课题界定、研究目标、课题研究内容。2.研究情况:按时间顺序或内容板块有条理地说明研究工作的开展情况;有详有略、有主有次地陈述研究过程中做了什么、怎么做的。3.阶段成果:客观地阐明本课…

php数组转换编码,PHP数组转换编码类

class arrayiconv{static protected $in;static protected $out;/*** 静态方法,该方法输入数组并返回数组** param unknown_type $array 输入的数组* param unknown_type $in 输入数组的编码* param unknown_type $out 返回数组的编码* return unknown 返回的数组*/static publ…

智能合约开发solidity编程语言实例

智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战示例快速入门,用例子深入浅出智能合约开发,体会以太坊构建去中心化可信交易技术魅力。智能合约其实是“执行合约条款的计算机交易协议”。区块链上的所有用户…

vba九九乘法表代码_VBA代码模块化--数据透视表

本周工作中,用到了数据透视表的操作,这里汇总一下,学习途径来自网络,学习成果我也乐于分享一二~,代码整理为模块,供大家举一反三,可以套用。① 创建数据透视表,及基本设置先展示数据…

IoT 、5G与边缘计算将会擦出怎样的火花?

来源:半导体行业观察边缘计算是数字世界中最令人兴奋的新概念之一。利用占用空间很少的微型数据中心网络,边缘计算使系统能够实时收集并分析重要数据,而不会增加现有基础设施的负担。在物联网系统中,通常以端到端的方式&#xff0…

js 读取php文件内容为空,PHP 读取文件内容代码(txt,js等)

PHP 读取文件内容代码(txt,js等)发布于 2014-10-15 20:15:37 | 128 次阅读 | 评论: 0 | 来源: 网友投递PHP开源脚本语言PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点&…

设计法则 - 菲茨定律 (转)

在看张小龙传时,无意间看到了菲茨定律这个设计法则,研究起来十分有趣,在web、app都广泛应用这个法则。而在简书上有人详细介绍了它,已经非常优秀了,所以这里放个链接,供参考学习。 设计法则: Fi…

windows安装pygame(python3.6)_当我试图安装PyGameforPython3.6时,Pip不起作用[过时]

我正在使用windows 10家庭版64位版本。我正在使用Python3.6 64位版本。我试图通过运行python的干净安装来解决这个错误,但这并没有解决问题。我试图通过pip安装pygame,但产生了以下结果:C:\Windows\system32>pip install pygameCollecting…

“嫦娥上月球挖土”!打破尘封44年的人类历史,中国航天实现“五个首次”...

资料来源:人民网、中国新闻网、智东西等物联网智库 整理发布转载请注明来源和出处3!2!1!点火!随着一声声振奋人心的倒计时,北京时间11月24日4时30分,搭载嫦娥五号月球探测器的长征五号遥五运载火…

就php干活,php可以做什么?,懂得这些技巧就够了

PHP,是英文超文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛地运用。工具/材料电脑PHP操作方法011、运行在服务器端&…

世界上有没有无法破解的密码?揭秘量子通信 | 图图是道

来源:文章2020年11月23日发表于《中国日报》的微信公众号 图图是道科学顾问 / 中国科学技术大学副教授 袁岚峰监制 / 柯荣谊 联合监制 / 邢志刚 统筹 / 张若琼总策划 / 王晓莹 主笔 / 张周项 绘制 / 吴洋未来智能实验室的主要工作包括:建立AI智能…

python怎么发图文_用Python发一封图文并茂的邮件

最近使用了不少通讯工具的接口, 比如企业微信机器人,钉钉,微信公众号的接口(未认证的订阅公众号),相对于邮件来说,它们的表现形式太弱。比如没有更丰富的版本方式。当然了,并不是说表现形式越棒就是约好的通知手段&…

evalin matlab,求解MATLAB问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这个是代码:syms x y z[deltafd]xlsread(附件2.xls,FDOA,B2:B290);[x1]xlsread(附件3.xls,主星星历,B2:B290);[x2]xlsread(附件3.xls,邻星星历,B2:B290);[y1]xlsread(附件3.xls,主星星历,C2:C290);[y2]xlsread(附件3.xl…