thinkphp6.x数据库操作需先配置.env或config/database.php连接参数,再通过db门面实现增删改查:插入用insert/insertgetid/insertall,查询用find/select/value/column,更新用update(须带where),删除用delete。

如果您在ThinkPHP6.x项目中需要与数据库交互,但尚未完成连接配置或无法执行基础数据操作,则可能是由于数据库参数未正确设置或Db类未正确引入。以下是实现数据库连接与增删改查功能的具体步骤:
一、配置数据库连接信息
数据库连接是所有数据操作的前提,ThinkPHP6支持通过.env文件或config/database.php进行配置,优先读取.env中的值。
1、在项目根目录下打开或新建.env文件,写入以下内容(根据实际环境修改):
DB_TYPE=mysql
DB_HOSTNAME=127.0.0.1
DB_DATABASE=thinkphp
DB_USERNAME=root
DB_PASSWORD=
DB_HOSTPORT=3306
DB_CHARSET=utf8mb4
DB_PREFIX=think_
2、确保.env文件未被Git忽略且未被部署脚本删除;若禁用.env,需在config/database.php中手动配置connections数组下的mysql连接项。
3、验证连接是否生效:在控制器中执行Db::query('SELECT 1'),不报错即表示连接成功。
二、使用Db门面执行插入操作
插入操作用于向数据表写入新记录,支持单条插入与批量插入两种方式,返回影响行数或自增ID。
1、在控制器方法中引入Db门面:use think\facade\Db;
2、执行单条插入并获取自增主键ID:
$id = Db::name('user')->insertGetId(['username' => '张三', 'email' => 'zhangsan@example.com']);
3、执行批量插入(传入二维数组):
$count = Db::name('user')->insertAll([['username'=>'李四','email'=>'lisi@example.com'],['username'=>'王五','email'=>'wangwu@example.com']]);
4、仅插入并返回影响行数(不获取ID):
$result = Db::name('user')->insert(['username'=>'赵六','email'=>'zhaoliu@example.com']);
三、使用Db门面执行查询操作
查询操作分为单条记录查询和数据集查询,支持链式条件拼接与结果格式转换。
1、查询单条记录(返回关联数组,无结果时返回null):
$user = Db::name('user')->where('id', 5)->find();
2、查询多条记录(返回对象集合,需调用toArray()转为数组):
$users = Db::name('user')->where('status', 1)->select()->toArray();
3、查询指定字段的值(如只取用户名):
$name = Db::name('user')->where('id', 5)->value('username');
4、查询某字段全部值组成索引数组(如所有邮箱):
$emails = Db::name('user')->where('status', 1)->column('email');
四、使用Db门面执行更新操作
更新操作基于WHERE条件匹配记录并修改字段值,返回被影响的记录行数。
1、按主键更新单条记录:
$affected = Db::name('user')->where('id', 5)->update(['username' => '张小三', 'email' => 'zxs@example.com']);
2、按其他条件更新(如按邮箱更新):
$affected = Db::name('user')->where('email', 'zhangsan@example.com')->update(['status' => 2]);
3、使用数据数组动态更新(字段名与值一一对应):
$data = ['username' => '李小四', 'updated_at' => time()]; $affected = Db::name('user')->where('id', 6)->update($data);
4、避免全表更新的关键提示:必须包含WHERE条件,否则update()将作用于整张表。
五、使用Db门面执行删除操作
删除操作依据WHERE条件移除匹配的记录,返回被删除的行数;支持物理删除与软删除两种模式。
1、执行物理删除(从表中彻底移除):
$deleted = Db::name('user')->where('id', 5)->delete();
2、按范围删除多条记录:
$deleted = Db::name('user')->where('status', 0)->where('create_time', 'delete();
3、使用in条件批量删除(如删除ID为1、3、5的用户):
$deleted = Db::name('user')->where('id', 'in', [1,3,5])->delete();
4、重要安全提示:delete()方法无WHERE条件时将清空整张表,请务必校验条件完整性。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











