PHP:ThinkPHP5数据库操作增删改查-Db类

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: PHP:ThinkPHP5数据库操作增删改查-Db类

项目文件目录

project/
    -app
    -conf

1、数据库配置

方式一 配置文件

conf/database.php


<?php
return [
    'type'            => 'mysql',
    'hostname'        => '127.0.0.1',
    'database'        => 'root',
    'username'        => 'root',
    'password'        => '123456',
    'hostport'        => '3306',
    'charset'         => 'utf8'
];

方式二:控制函数

app\index\controller\Index.php


namespace app\index\controller;
use think\Db;
class Index
{
    public function index()
    {
        $db = Db::connect([
            'type' => 'mysql',
            'hostname' => '127.0.0.1',
            'database' => 'root',
            'username' => 'root',
            'password' => '123456',
            'hostport' => '3306',
            'charset' => 'utf8'
        ]);
        dump($db);
    }
}

方式三 DSN方式 Data Source Name

$db = Db::connect('mysql://root:123456@127.0.0.1:3306/demo#utf8');

方式四 从读取配置

conf/config.php


<?php
return [
    'db_config' => [
        'type'            => 'mysql',
        'hostname'        => '127.0.0.1',
        'database'        => 'root',
        'username'        => 'root',
        'password'        => '123456',
        'hostport'        => '3306',
        'charset'         => 'utf8'
    ]
];

app\index\controller\Index.php


$db = Db::connect('db_config');
// 或者
use  think/Config;
$db = Db::connect(Config::get('db_config'));

2、获取数据表对象

$bd = Db::table('pre_user')  # Db是单例模式
$bd = Db::name('user')  # 会自动添加前缀
# 助手函数 db 每次调用实例化false取消每次实例化
$bd = db('pre_user', [], false)

3、查询数据

// 检查数据库配置
dump(config('database'));
// 使用sql语句查询
$res = Db::query("select * from student");
$res = Db::query("select * from student where id=?", [1]);
// 插入数据 返回影响条数
$res =Db::execute("insert into student set name=?, age=?", ['Tom',23]);
// select 返回所有记录 二维数组 []
$res = Db::table('student')->select();
// column 返回所有列记录 二维数组 NULL
# 如果存在第二个参数,为key值
$res = Db::table('student')->column('age', 'name');
// find 返回一条记录 一维数组 NULL
$res = Db::table('student')->find();
// value 返回一条记录中的某个字段 NULL
$res = Db::table('student')->value('name');

4、插入数据

$db = Db::table('student');


#insert 返回值是影响记录的行数,插入数
$res = $db->insert([
            'name' => 'Tom',
            'age' => 23
        ]);
#insetGetId 返回值插入数据的自增id
$res = $db->insertGetId([
            'name' => 'Tom',
            'age' => 23
        ]);
#insertAll 返回插入数据成功的行数
$data = [];
for ($i=0; $i<10; $i++)
{
    $data[] = [
        'name' => "Tom{$i}",
        'age' => 23
    ];
};
$res = $db->insertAll($data);

5、更新数据

# update 更新多个字段 返回影响行数
$res = $db->where([
        'id'=>1
    ])->update([
        'name'=> '王小二'
    ]);
# setField 更新一个字段 返回影响行数
$res = $db->where([
        'id' => 1
    ])->setField('name', '王大锤');
# setInc 自增 返回影响行数
$res = $db->where([
        'id' => 1
    ])->setInc('age');
# setDec 自减 返回影响行数
$res = $db->where([
        'id' => 1
    ])->setDec('age');

6、删除数据

# 条件删除,返回影响行数
$res = $db->where(
        ['id'=>1]
    )->delete();
# 传入主键删除 返回影响行数
$res = $db->delete(2);
# 清空数据
$res = $db->where('1=1')->delete();

7、条件构造器

buildSql();返回SQL语句


where(‘字段名’,‘表达式’,‘查询条件’);

image.png

$db->where()->buildSql();
# 构造条件
$res = $db
    ->where('id', 'in', [1, 2, 3])
    ->whereOr('id', '<', '4')
    ->buildSql();
// string(62) "( SELECT * FROM `student` WHERE  `id` IN (1,2,3) OR `id` < 4 )"

链式操作

$res = Db::table('user')
    ->where('id', '>', 10)
    ->field('name', 'id')
    ->order('id DESC')
    // ->limit(3, 5)
    // ->page(3, 5)  // limit((3-1)*5, 5)
    ->group('`group`')
    ->select();

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 SQL 关系型数据库
PHP与数据库交互:从基础到进阶
【10月更文挑战第9天】在编程的世界里,数据是流动的血液,而数据库则是存储这些珍贵资源的心脏。PHP作为一门流行的服务器端脚本语言,其与数据库的交互能力至关重要。本文将带你从PHP与数据库的基本连接开始,逐步深入到复杂查询的编写和优化,以及如何使用PHP处理数据库结果。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和技巧,让你在PHP和数据库交互的道路上更加从容不迫。
|
27天前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
1月前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
40 1
|
2月前
|
前端开发 Java 数据库连接
javamvc配置,增删改查,文件上传下载。
【10月更文挑战第4天】javamvc配置,增删改查,文件上传下载。
42 1
|
2月前
|
存储 NoSQL API
使用Py2neo进行Neo4j图数据库的增删改查操作
使用Py2neo进行Neo4j图数据库的增删改查操作
114 5
|
2月前
|
数据可视化 API PHP
低代码开发工具-学生管理系统-老师管理增删改查实现
低代码开发工具-学生管理系统-老师管理增删改查实现
44 5
|
2月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP开发领域,设计模式是解决常见问题的高效方案集合。它们不是具体的代码,而是一种编码和设计经验的总结。单例模式作为设计模式中的一种,确保了一个类仅有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的基本概念、实现方式及其在PHP中的应用。
单例模式在PHP中的应用广泛,尤其在处理数据库连接、日志记录等场景时,能显著提高资源利用率和执行效率。本文从单例模式的定义出发,详细解释了其在PHP中的不同实现方法,并探讨了使用单例模式的优势与注意事项。通过对示例代码的分析,读者将能够理解如何在PHP项目中有效应用单例模式。
|
2月前
|
JavaScript 前端开发 测试技术
[新手入门]todolist增删改查:vue3+ts版本!
【10月更文挑战第15天】[新手入门]todolist增删改查:vue3+ts版本!
|
3月前
|
SQL 关系型数据库 MySQL
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
本文介绍了在ThinkPHP6框架中如何连接和使用数据库进行增删改查操作。内容包括配置数据库连接信息、使用Db类进行原生MySQL查询、find方法查询单个数据、select方法查询数据集、save方法添加数据、insertAll方法批量添加数据、insertGetId方法添加数据并返回自增主键、delete方法删除数据和update方法更新数据。此外,还说明了如何通过数据库配置文件进行数据库连接信息的配置,并强调了在使用Db类时需要先将其引入。
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
|
3月前
|
SQL 关系型数据库 数据库连接
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
本文介绍了PHP中PDO(PHP Data Objects)扩展的基本概念和使用方法。内容包括PDO类和PDOStatement类的介绍,PDO的简单使用,预定义占位符的使用方法,以及PDOStatement对象的使用。文章还讨论了绑定预定义占位符参数的不同形式,即bindValue和bindParam的区别。通过具体示例,展示了如何使用PDO进行数据库连接、数据查询、数据插入等操作。
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别