ThinkPHP6之数据库操作上

news2024/9/22 15:26:10

ThinkPHP6之数据库操作上

  • 前言
  • 1. 数据库配置
  • 2. 数据库操作
        • 1. 查询操作
        • 2. 插入操作
        • 3. 修改
        • 4. 删除
        • 5. 其他
  • 3.数据集
  • 总结


前言

注意,tp6在进行语法学习的时候都是在app/index.php中写代码的,代码写在index函数下面,而且tp6自带的文件都是由自动加载器的,不需要包含autoload.php文件


1. 数据库配置

要对数据库进行操作,要修改两个地方,一个数.env文件,一个是config/database.php文件

  • config/database.php
 'connections'     => [
        'mysql' => [  // 代表连接的一个数据库
            // 数据库类型
            'type'            => env('database.type', 'mysql'),
            // 服务器地址
            'hostname'        => env('database.hostname', '127.0.0.1'),
            // 数据库名
            'database'        => env('database.database', 'cr'),
            // 用户名
            'username'        => env('database.username', 'root'),
            // 密码
            'password'        => env('database.password', '901026'),
            // 端口
            'hostport'        => env('database.hostport', '3306'),
            // 数据库连接参数
            'params'          => [],
            // 数据库编码默认采用utf8
            'charset'         => env('database.charset', 'utf8'),
            // 数据库表前缀   配置后只有写数据库后面
            'prefix'          => env('database.prefix', ''),

            // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
            'deploy'          => 0,
            // 数据库读写是否分离 主从式有效
            'rw_separate'     => false,
            // 读写分离后 主服务器数量
            'master_num'      => 1,
            // 指定从服务器序号
            'slave_no'        => '',
            // 是否严格检查字段是否存在
            'fields_strict'   => true,
            // 是否需要断线重连
            'break_reconnect' => false,
            // 监听SQL
            'trigger_sql'     => env('app_debug', true),
            // 开启字段缓存
            'fields_cache'    => false,
        ],
    ],

在这里插入图片描述

connections里面的一个子元素代表连接的一个数据库,要使用多个数据库,要添加多个数据库对象,写prefix之后就只需要写数据表后面的字段了

  • config/env
[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = cr
USERNAME = root
PASSWORD = 901026
HOSTPORT = 3306
CHARSET = utf8
DEBUG = true

在这里插入图片描述

注意和config/database.php对应上就可以了

2. 数据库操作

创建数据库

create database cr;
use cr;
insert into phpcn_user values (1, '欧阳克'),(2, '朱'),(3,'asd'),(4,'asde'),(5,'rts');

在写操作数据库语句之前写use think\facade\Db;

1. 查询操作

  1. find():通过主键查找,find方法查询结果不存在,返回 null,否则返回结果数组

  2. where():查询的条件

  3. field(), column():查询某一列数据

  4. value() :通过值查找,查询某段的值

如上都是查询一条数据,一列数据,或者是一个数据

  1. select() :查询好多条数据,和toArray()一起使用
        $result = Db::table('phpcn_user')->column('id');
        printf('<pre>%s</pre>',print_r($result,true));
        $result = Db::table('phpcn_user')->where('id','>','2')->value('name');
        printf('<pre>%s</pre>', print_r($result, true));
        $result = Db::table('phpcn_user')->where('id', '3')->value('name');
        printf('<pre>%s</pre>', print_r($result, true));

        print('-----------------');
        $result = Db::table('phpcn_user')->where('id','>=','2')->select()->toArray();
        printf('<pre>%s</pre>', print_r($result, true));

2. 插入操作

  1. insert($data) $data为关联数组,通常通过
  2. insertAll($data) :添加多条数据
  3. insertGetId($data) :添加数据并且获取添加数据的主键
        $data = ['id'=>11,'name'=>'zxasdc'];
        $result = DB::table('phpcn_user')->insert($data);
        echo $result;
        $data = ['id'=>11,'name'=>'zxasdc'];
        $result = DB::table('phpcn_user')->insertGetId($data);
        echo $result;
        $data = [
            [
                'id'=>7,
                'name'=>'dfg'
            ],
            [
                'id' => 8,
                'name' => 'df8g'
            ]
            ];
        $result = DB::table('phpcn_user')->insertAll($data);
        echo $result;

插入操作,插入的都是关联数组

3. 修改

  1. update(修改后的值) + where(修改哪一个)
  2. updata($data) $data为关联数组
  3. inc():自增 dec():自减
 $result = Db::table('phpcn_user')->where('id',3)->update(['name'=>'ykk']);

4. 删除

  1. delete()
  2. useSoftDelete()
$result = Db::table('phpcn_user')->where('id',5)->delete();

5. 其他

  1. save($data) : $data是关联数组,save方法统一写入数据,自动判断是新增还是更新数据(以写入数据中是否存在主键数据为依据)
  2. query() :方法用于执行 MySql 查询操作
  3. execute() : 方法用于执行 MySql 新增和修改操作

2和3都是直接操作数据库的

        $result = Db::query("select * from `phpcn_user` where `id` > 3");
        print_r($result);
        $result = Db::execute("insert into `phpcn_user` values (11, 'asd')");
        print_r($result);

3.数据集

  1. toArray()
  2. isEmpty()

总结

数据库操作前一定要加上 use think\facade\Db;

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

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

相关文章

经常打电话的人用什么耳机好?通话质量好的蓝牙耳机推荐

用蓝牙耳机听歌、刷视频、玩游戏已经成为趋势&#xff0c;作为人手必备的一件单品&#xff0c;在款式层出不穷&#xff0c;功能各异的蓝牙耳机市场&#xff0c;许多人都不知道究竟什么蓝牙耳机好&#xff1f;下面整理了几款通话质量好的蓝牙耳机。 一、南卡小音舱Lite2蓝牙耳机…

【服务器数据恢复】Raid磁盘阵列常见故障类型原因分析

由于raid的特点和优势&#xff0c;磁盘阵列技术被广泛应用于服务器和存储等商用领域。由于用户基数大&#xff0c;出现故障的情况也不少。通过这篇文章介绍一下常见的raid磁盘阵列数故障类型和原因。 故障类型一、磁盘阵列处于降级状态时未及时rebuild。 RAID磁盘阵列的数据安全…

Linux+云服务器

目录 前言 一、Linux介绍 二、Linux 环境搭建 2.1 云服务器 2.2 XShell 终端 三、Linux 常用命令 3.1操作目录的命令 3.1.1 ls 【list的缩写】 双击某个目录 3.1.2 pwd 【print working directory的缩写】打印当前所处地址 3.1.3 cd 【change directory的缩写】切…

DAY02_运算符和选择语句

1&#xff1a;运算符 对数据进行运算。而对数据运算就要用到运算符。 和表达式做一个简单的描述&#xff1a; 运算符&#xff1a;对字面量或者变量进行操作的符号 表达式&#xff1a;用运算符把字面量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的…

JUC多并发编程 volatile

特点&#xff1a; 可见性有序性(有时需要禁用重排) 内存语义&#xff1a; 当写一个 volatile 变量时&#xff0c; JMM 会把该线程对应的本地内存中的共享变量值立即刷新回主存中当读一个 volatile 变量时&#xff0c; JMM 会把该线程对应的本地内存设置无效&#xff0c;重新…

m4a怎么转换成mp3,4招搞定

m4a怎么转换成mp3&#xff1f;相信很多朋友都知道&#xff0c;无论是音频、视频、图片等很多电子文件&#xff0c;都会有多种格式。由于格式不统一&#xff0c;很容易导致文件和软件之间出现不兼容的情况&#xff0c;最直接的结果就是在播放器中无法打开&#xff0c;或者使用的…

一篇文章带你了解Spring/SpringBoot常用注解(建议收藏!!! )

这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景。对于每一个注解我都说了具体用法&#xff0c;掌握搞懂&#xff0c;使用 SpringBoot 来开发项目基本没啥大问题了&#xff01; 1. SpringBootApplication 这里先单独拎出SpringBootAppl…

NUXT规范及常见问题

props中不要使用Web环境才有的对象&#xff0c;服务端渲染的时候会失败 使用<Nuxt/>组件代替<router-view/>&#xff0c;使用<NuxtLink/>代替<router-link/>static目录下的资源是静态资源&#xff0c;不应该通过import或../static/img/logo.png等方式…

【AI绘画】我以Midjourney为主学习AI绘画效果咋样?

上一篇博客链接&#xff1a;【ChatGPT】ChatGPT掀起AIGC与AI浪潮_山楂山楂丸的博客-CSDN博客 这周&#xff0c;我加入了新星计划&#xff0c; 涉及的领域是我感兴趣以及对未来规划有帮助的——AI绘画&#xff01;​​​​​​​ 文章目录 前言 一、AI绘画是什么 二、AI绘画进…

MYSQL命令小总结

一、创建查看 1.输入cmd&#xff0c;打开控制器&#xff0c;输入如下&#xff0c;打开MYSQL C:\Users\ASUS> mysql -u root -p 2.查看已有数据库 mysql> show databases; 3.建立数据库 4.使用数据库 use englishword;5.建立表单 CREATE TABLE user ( id INT primar…

AI Stable Diffusion Prompt参数【一】

AI Stable Diffusion Prompt参数【一】 配置场景1:草丛里的女性promptNegative Prompt结果 场景2: 雨中披头散发的女孩promptNegative Prompt结果 场景3: 一个女孩和她的朋友在逛街promptNegative Prompt结果 场景4: 学生在教室promptNegative Prompt结果 场景5: 穿着白色丝袜和…

自动化工具 基于 Antd+DRF 开发了一款适配 JMeter 的接口自动化测试报告

JMeter Report 基于 AntdDRF 开发的一款 JMeter 测试报告服务&#xff0c;用于在 JMeter 接口测试中使用。 &#x1f334; 背景 JMeter 是测试工作中常用的一款工具&#xff0c;除了压测还可以用来做接口自动化的测试。 从事测试多年&#xff0c;接口自动化也做过很多的尝试…

从零搭建开发脚手架 自定义打包构建研发输出产物

文章目录 背景目录源码目录结果目录 实现项目打包方式一 使用IDEA工具打包,选择对应的profiles,然后clean package方式二 使用maven命令打包 部署 背景 在打包项目时&#xff0c;通常只需要生成一个可执行的jar文件。然而&#xff0c;有时候需要将启动脚本或外部配置文件附加到…

Java版电子招投标系统源码之了解电子招标投标全流程

随着各级政府部门的大力推进&#xff0c;以及国内互联网的建设&#xff0c;电子招投标已经逐渐成为国内主流的招标投标方式&#xff0c;但是依然有很多人对电子招投标的流程不够了解&#xff0c;在具体操作上存在困难。虽然各个交易平台的招标投标在线操作会略有不同&#xff0…

感应开关盖垃圾桶项目实现.md

1.项目接线 接线示意图和实物图 示意图和接线说明&#xff1a; 舵机控制口P1.1&#xff08;定时器0中断&#xff09;&#xff1b;超声波Trig接P1.5 ,Echo接P1.4 &#xff1b;蜂鸣器接P2.0 口;震动传感器接P3.2 口&#xff08;外部中断0&#xff09;。 实物图&#xff08;未封装…

室内人员定位,硬件部署方案多场景技术分析

室内外定位技术在工业、矿业、医疗养老、能源电力、展览展会、公检法司、工地等众多领域具有丰富的应用场景。定位能力作为“物联网”的核心能力之一&#xff0c;其定位精度和稳定性不仅需要强大的算法支撑&#xff0c;也有赖于好的室内定位设备的落地部署。 基于蓝牙LoRa定位…

MySQL按照,库的操作,表的约束 --- MySQL总结(一)

MySQL 文章目录 MySQLMySQL的安装MySQL组成架构连接池软件层引擎层储存层 库的操作创建库修改数据库删除数据库备份数据库还原数据库查看链接情况 表操作创建表查看表结构修改表结构添加字段修改字段类型长度更改表名修改属性删除表 数据类型表的约束空属性&#xff08;not nul…

typescript全局安装卸载以及npm相关问题

全局安装 npm install -g typescript 全局安装之后&#xff0c;如果想要卸载要使用 npm uninstall -g typescript 全局安装之后可以在终端使用 tsc xxx 编译ts文件 本地安装&#xff0c;也就是在项目目录下安装 npm install typescript 本地卸载 npm uninstall type…

【LeetCode】刷题数据结构(1)[反转链表]

【LeetCode】刷题数据结构&#xff08;1&#xff09; 1.题目来源2.题目描述3.解题思路4.代码展示 所属专栏&#xff1a;玩转数据结构题型 博主首页&#xff1a;初阳785 代码托管&#xff1a;chuyang785 感谢大家的支持&#xff0c;您的点赞和关注是对我最大的支持&#xff01;&…

Elasticsearch ILM DSL 索引生命周期管理

1、冷热集群架构 冷热架构也叫冷暖架构&#xff0c;是“Hot-Warm” Architecture的中文翻译。 冷热架构本质是给节点设置不同的属性&#xff0c;让每个节点具备了不同的属性。为演示 ILM&#xff0c;需要首先配置冷热架构&#xff0c;三个节点在 elasticsearch.yml 分别设置的…