## 查询构造器
除了原生查询外,5.0还提供了数据库查询构造器,可以更方便执行数据库操作,查询构造器基于PDO实现,对不同的数据库驱动都是统一的语法。
>[danger]#### 注意:
> * * * * *
> ThinkPHP `5.0`查询构造器使用 `PDO `参数绑定,以保护应用程序免于 `SQL`注入,因此传入的参数不需额外转义特殊字符。
同样是实现上面的功能,我们可以改成:
~~~
// 插入记录
Db::table('think_data')
->insert(['id' => 18, 'name' => 'thinkphp', 'status' => 1]);
// 更新记录
Db::table('think_data')
->where('id', 18)
->update(['name' => "hello"]);
// 查询数据
$list = Db::table('think_data')
->field('name,email')
->where('id', 18)
->select();
// 删除数据
Db::table('think_data')
->where('id', 18)
->delete();
~~~
由于我们在数据库配置文件中设置了数据表的前缀为`think_`,因此,`table`方法可以改成`name`方法,这样就不会因为数据表前缀的修改而改动`CURD`代码,例如:
~~~
// 插入记录
Db::name('data')
->insert(['id' => 18, 'name' => 'thinkphp']);
// 更新记录
Db::name('data')
->where('id', 18)
->update(['name' => "framework"]);
// 查询数据
$list = Db::name('data')
->where('id', 18)
->select();
dump($list);
// 删除数据
Db::name('data')
->where('id', 18)
->delete();
~~~
如果使用系统提供的助手函数`db`则可以进一步简化查询代码如下:
~~~
$db = db('data');
// 插入记录
$db->insert(['id' => 20, 'name' => 'thinkphp']);
// 更新记录
$db->where('id', 20)->update(['name' => "framework"]);
// 查询数据
$list = $db->where('id', 20)->select();
dump($list);
// 删除数据
$db->where('id', 20)->delete();
~~~
>[danger] `db`助手函数在`V5.0.9`之前版本默认会每次重新连接数据库,因此应当尽量避免多次调用。
关于更多的查询条件和查询语法,会在后面一章查询语言中详细讲述。
- 零、序言
- 一、基础
- (1)简介
- (2)安装
- (3)目录结构
- (4)运行环境
- (5)入口文件
- (6)资源访问
- (7)调试模式
- (8)控制器
- (9)视图
- (10)读取数据
- (11)总结
- 二、URL和路由
- (1)URL访问
- (2)参数传入
- (3)隐藏入口
- (4)定义路由
- (5)URL生成
- (6)总结
- 三、请求和响应
- (1)请求对象
- (2)请求信息
- (3)响应对象
- (4)总结
- 四、数据库
- (1)准备
- (2)数据库配置
- (3)原生查询
- (4)查询构造器
- (5)链式操作
- (6)事务支持
- 五、查询语言
- (1)查询表达式
- (2)批量查询
- (3)快捷查询
- (4)视图查询
- (5)闭包查询
- (6)获取值和列
- (7)聚合查询
- (8)时间查询
- (9)字符串查询
- (10)分块查询
- 六、模型和关联
- (1)模型定义
- (2)基础操作
- (3)读取器和修改器
- (4)类型转换和自动完成
- (5)查询范围
- (6)输入和验证
- (7)关联
- (8)模型输出
- 七、视图和模板
- (1)模板输出
- (2)分页输出
- (3)公共模板
- (4)模板定位
- (5)布局模板
- (6)标签定制
- (7)输出替换
- (8)渲染内容
- (9)助手函数
- 八、调试和日志
- (1)第一式:未雨绸缪——页面Trace
- (2)第二式:初见端倪——异常页面
- (3)第三式:拨云见日——断点调试
- (4)第四式:欲穷千里——日志分析
- (5)第五式:运筹帷幄——远程调试
- 九、API开发
- (1)API版本
- (2)异常处理
- (3)RESTFul
- (4)REST调试
- (5)API调试
- (6)安全建议
- 十、命令行工具
- (1)查看指令
- (2)模块生成
- (3)控制器生成
- (4)生成类库映射文件
- (5)生成路由缓存
- (6)生成字段缓存
- (7)指令扩展
- (8)命令行调试
- (9)命令行颜色支持
- (10)命令调用
- 十一、扩展
- (1)函数扩展
- (2)类库扩展
- (3)驱动扩展
- (4)Composer扩展
- 十二、杂项
- Session
- Cookie
- 验证码
- 文件上传
- 图像处理
- 单元测试
- 番外篇:学习ThinkPHP5的正确姿势
- 概念篇:ThinkPHP5名词解释
- 附录A、常见问题集
- 附录B、3.2和5.0区别
- 附录C、助手函数
- 附录D、5.1你必须努力避免的一些问题