ThinkPHP 的 Db 类提供轻量级数据库操作,无需模型即可执行增删改查;支持链式调用、原生 SQL、事务安全及自动表前缀处理,适合快速开发。

ThinkPHP 中的 Db 类是操作数据库最常用、最轻量的方式,无需定义模型即可直接执行 SQL 查询、增删改查等操作,适合快速开发或简单数据处理场景。
基础用法:引入与配置确认
确保数据库配置已正确写入 config/database.php(或环境变量中),例如:
'type' => 'mysql''hostname' => '127.0.0.1''database' => 'your_db_name''username' => 'root''password' => '123456'
使用前无需手动实例化,直接调用静态方法即可:use think\Db; 或直接用 \think\Db::table('user')->select();
立即学习“PHP免费学习笔记(深入)”;
常用查询操作
支持链式调用,语法简洁直观:
- 查全部:
\think\Db::table('user')->select(); - 查单条:
\think\Db::table('user')->where('id', 1)->find(); - 查字段:
\think\Db::table('user')->field('name,email')->select(); - 带条件查询:
\think\Db::table('user')->where('status', 1)->order('create_time desc')->limit(10)->select(); - 原生 SQL 查询:
\think\Db::query("SELECT * FROM user WHERE name LIKE ?", ['%张%']);
增删改操作
注意:所有写操作默认开启事务安全检测(可配),返回影响行数或 ID:
- 新增一条:
\think\Db::table('user')->insert(['name' => '李四', 'email' => 'lisi@example.com']);(返回影响行数) - 新增并获取自增 ID:
\think\Db::table('user')->insertGetId(['name' => '王五']); - 批量插入:
\think\Db::table('user')->insertAll([['name'=>'A'],['name'=>'B']]); - 更新:
\think\Db::table('user')->where('id', 1)->update(['name' => '新名字']); - 删除:
\think\Db::table('user')->where('id', 1)->delete();
注意事项与技巧
- 表名不带前缀时,
table()方法会自动读取配置中的prefix并拼接;如需忽略前缀,可传完整表名或使用name()方法 - 字段名和参数建议用数组键值对方式传入,避免 SQL 注入;若必须拼接字符串,请用
escape()或参数绑定 - 复杂查询(如子查询、联合查询)推荐用
Query类或原生 SQL +query()/execute() - 调试时可用
\think\Db::getLastSql()查看刚执行的 SQL 语句



















