【thinkPHP】数据库查询

news2024/11/28 20:56:41

最近在做一个小程序项目,后端使用php,php的优点是快速开发,简单,对服务器资源使用少(没什么钱买服务器),相对于java那种动不动就2g起步的内存。

说明:在使用Db时需要引入Db的facade

use think\facade\Db;

1、查询单个数据

// table方法必须指定完整的数据表名
Db::table('think_user')->where('id', 1)->find();

如果希望查询数据不存在的时候返回空数组,可以使用

// table方法必须指定完整的数据表名
Db::table('think_user')->where('id', 1)->findOrEmpty();

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

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

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

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

select 方法查询结果是一个数据集对象,如果需要转换为数组可以使用

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

3、值和列查询

// 返回某个字段的值  value 方法查询结果不存在,返回 null
Db::table('think_user')->where('id', 1)->value('name');

查询某一列的值可以用

// 返回数组  column方法查询结果不存在,返回空数组
Db::table('think_user')->where('status',1)->column('name');
// 指定id字段的值作为索引
Db::table('think_user')->where('status',1)->column('name', 'id');

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

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

Db::table('think_user')->chunk(100, function($users) {
    foreach ($users as $user) {
        //
    }
});

你可以通过从闭包函数中返回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) {
        //
    }
});

5、原生查询

原生查询支持的方法:query、execute。
query方法用于执行SQL查询操作,返回查询结果数据集(数组);
execute用于更新和写入数据的sql操作,如果数据非法或者查询错误则返回false,否则返回影响的记录数。

5.1 query方法

Db::query("select * from think_user where status=:id", ['id' => 1]);

5.2 execute方法

Db::execute("update think_user set name='thinkphp' where status=1");

等基本功能完善了,就开源出来供大家娱乐娱乐。小程序现在已经上线。

“科学熊“小程序:
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

ORB-SLAM2学习笔记1之Ubuntu20.04+ROS-noetic安装ORB-SLAM2

文章目录 0 引言1 安装依赖1.1 opencv安装1.2 Eigen3安装1.3 Pangolin安装1.4 其他 2 编译安装ORB-SLAM22.1 build.sh2.2 build_ros.sh 0 引言 ORB-SLAM2是一种用于单目、双目和RGB-D相机的视觉SLAM(同时定位与地图构建)系统。它由萨拉戈萨大学和伦敦帝…

软件测试之常用测试用例设计方法

本文讲解了软件测试的四种常用测试用例设计的方法 目录 大纲 等价类划分 边界值分析方法 边界值分析方法 判定表法 场景法 错误推荐法(剩下几个小时需要上线) 前言 软件测试描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句…

嘉立创EDA练习

https://lceda.cn/page/download https://prodocs.lceda.cn/cn/faq/client/index.html 基础电子电路知识: 基础操作 Shiftf:调出元件库 嘉立创打样只能10cmX10cm之内 过孔的放置 检查DRC(是否有连线错误) 导出Gerber 导出坐标文件 坐标文件一般…

使用docker 部署k8s集群

目录 一、环境准备: 二、master节点修改hosts, 配置主机可达 三、将桥接的IPv4流量传递到iptables的链 四、配置 daemon.json,设置cgroup的管理方式为systemd及配置阿里云镜像加速 五、添加yum源 六、安装 kubeadm,kubelet …

Android Java代码与JNI交互字符串转换(四)

🔥 Android Studio 版本 🔥 🔥 创建JNIString.java 🔥 package com.cmake.ndk1.jni;public class JNIString {static{System.loadLibrary("string-lib");}public native String callNativeString(String str);public native void stringMethod(String str)…

凯迪仕智能锁包揽行业五项大奖 K70 Pro Max再现品牌非凡实力

第25届建博会于7月11日落幕。Kaadas凯迪仕第10年受邀参展,凭借508㎡的超大展馆和重磅新品K70“千里眼”智能锁震撼亮相,各圈层网红云集打卡直播以及众多主流及行业媒体聚集报道,人头攒动,再掀行业新热潮。 值得一提的是&#xff…

Arcgis Pro NDVI(植被指数)导出RGB

在arcgis中计算的NDVI栅格数据,取值范围为-1到1,直接导出JPG或者PNG,会出现导出错误的问题: 导出出错, 设置导出格式为TIFF,然后选中使用渲染器,勾选强制RGB颜色,即可导出你选择的色…

IIS实现http跳转https的重定向方法

整体流程为: 1、安装SSL证书;2、下载安装URL Rewrite模块;3、配置“URL重写”规则,或者修改web.config配置文件。 一、安装部署证书 首先安装SSL证书。 二、安装URL ReWrite扩展 URL ReWrite扩展下载地址https://www.iis.net/…

C语言学生信息管理系统

C语言版学生信息管理系统 一,开发环境 操作系统:windows10, windows11, linux, mac等。开发工具:Qt, vscode, visual studio等开发语言:c语言 二,功能需求 1. 用户界面: 提供一个简洁的文本界面,用户可…

windows 系统数据结构化组织

wmi 类枚举 枚举类实例 命令行查询类属性 Get-WmiObject -Query "select * from Win32_NTLogEvent where EventCode 104"wbemtest 查询 eventvwr 查看验证

Package amstex Error: Package `amstex‘ is obsolete, substituting `amsmath‘.

报错原文: Package amstex Error: Package amstex is obsolete, substituting amsmath.包 “amstex” 已过时,替换为 “amsmath” 将 改为 我本意是在公式中加入文本,用一下\text{文本} ,之前要导入amstex,现在该包…

内存泄漏检测组件

文章目录 一、内存泄漏概述1.1 什么是内存泄漏1.2 内存泄漏导致的后果1.3 内存泄漏解决思路 二、宏定义方法2.1 宏定义2.2 检测位置2.3 结果分析 三、hook方法3.1 hook3.2 检测位置3.3 递归调用3.4 结果分析3.5 addr2line 四、__libc_malloc 和 __libc_free 一、内存泄漏概述 …

Linux 进度条

文章目录 一、理解回车换行二、认识行缓冲1、代码一、二(回车换行理解)2、代码三、四(sleep函数和ffush函数理解) 三、简单倒计时1、效果展示2、倒计时代码3、实现过程分析 四、进度条1、效果展示2、进度条代码   makefile   …

Mac上快速将视频转化为GIF动图

1、找到需要转为GIF的视频,使用QuickTime Player打开,找到屏幕左上角的QuickTime Player菜单,点击【编辑】-【修剪】 2、视频下方会出现一个时间轴,拖动选取自己想要的时间段,修剪完成后保存 3、右键剪辑好的视频&…

前端学习——Web API (Day4)

日期对象 实例化 日期对象方法 案例 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content…

【前端】网页开发精讲与实战 CSS Day 2

&#x1f680;Write In Front&#x1f680; &#x1f4dd;个人主页&#xff1a;令夏二十三 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;前端 &#x1f4ac;总结&#xff1a;希望你看完之后&#xff0c;能对你有…

『点云处理任务 』用PCL库 还是 深度学习模型?

深度学习和PCL库都可以用来做点云处理任务&#xff0c;但是二者侧重点有所不同。 1、PCL库&#xff08;点云库&#xff09;是一个专门用于点云处理和三维几何分析的开源类库&#xff0c;常用于以下任务&#xff1a; 1、点云滤波&#xff1a;用于去除噪音、下采样和平滑等操作&…

GM/T0015-2012学习笔记

GM/T0015-2012学习笔记 文章目录 GM/T0015-2012学习笔记数字证书数字证书特性用户证书形式 数字证书格式DER资料1资料2 //TODO 吐槽一下&#xff1a;既然是标准&#xff0c;就应该是广而告知&#xff0c;被一些信息查的网站&#xff0c;高价出售。 我从“密码行业标准化技术委…

一文读懂单分子标签UMI

背景 在整理分子标签&#xff08;unique molecular identifier&#xff0c;UMI&#xff09;之前&#xff0c;先了解下&#xff1a; NGS 中潜在的错误来源有哪些&#xff1f; 1. 来源建库过程&#xff1a;文库制备、靶向序列捕获和测序均涉及 DNA 聚合酶以及扩增步骤。这些过程…

和LangChain CEO一起讲解深度学习在数据领域的应用;如何识别语音DeepFake?

&#x1f989; AI新闻 &#x1f680; 如何识别语音DeepFake&#xff1f; 摘要&#xff1a;加拿大滑铁卢大学的研究人员开发了一种语音DeepFake软件&#xff0c;成功qipian语音认证系统概率高达99%。其他安全研究人员也开始应对这一技术挑战&#xff0c;亚马逊研究人员尝试检查…