# 核心操作
数据库查询构造器 (query builder) 提供方便、流畅的接口,用来建立及执行数据库查找语法。在你的应用程序里面,它可以被使用在大部分的数据库操作,而且它在所有支持的数据库系统上都可以执行。
HDPHP 框架的 CURD 的自由度超过你的想象,当开启 DEBUG 模式后,所有 SQL 语句问题均会在页面中显示,一目了然。
> 注意: HDPHP 查询构造器使用 PDO 参数绑定,以保护应用程序免于 SQL 注入,因此传入的参数不需额外转义特殊字符。
[TOC]
## 预准备操作
HDPHP支持使用预准备查询,可以完全避免SQL注入。
#### 修改操作
```
Db::execute("update news set total=:total where id=:id",[':total'=>5,':id'=>1]);
```
## 查询操作
##### 使用标识名
```
Db::query("select * from site where siteid=:siteid AND name=:name",
[':siteid'=>36,':name'=>'后盾']);
```
##### 使用占位符
```
Db::query("select * from news where title like ?",['%后盾网%'])
```
## 常用操作
#### 查找
下面是使用原生 SQL 语句进行查询,更灵活的方式请查看 查询构造器 部分
```
Db::table('user')->where('id','>',1)->get();
```
#### 新增
```
Db::table('user')->insert(['username'=>'向军','qq'=>'2300071698']);
//数组数据会过滤掉非法字段
```
#### 不存在时新增
```
$user = Db::table('user')->firstOrCreate(['username' => '李四'],['username'=>'李四','age'=>22]);
//如果不存在叫 “李四” 的用户就新增用户
```
#### 替换
```
Db::table('user')->replace(['id'=>1,'username'=>'向军','qq'=>'2300071698']);
//如果字段中有主键或唯一索引,并且数据存在,replace操作将执行替换当前记录的操作
```
#### 添加并获取自增主键
如果数据表有自动递增的ID,可以使用 insertGetId 添加数据并返回该 ID
```
Db::table('user')->insertGetId(['username'=>'向军','qq'=>'2300071698']);
```
#### 更新
```
Db::table('user')->where("id",1)->update(['username'=>'后盾网']);
//数组数据会过滤掉非法字段
```
#### 删除
```
Db::table('user')->where('id',1)->delete();
//删除指定的主键值
Db::table('user')->delete(1);
Db::table('user')->delete([2,3,5]);
```
#### 自增一个字段值
将total字段值加2
```
Db::table("user")->where('id',1)->increment('total',2);
```
#### 自减一个字段值
```
Db::table("user")->where('id',1)->decrement('total',2);
将total字段减少2
```
#### 获取自增主键
```
$db = Db::table( 'news' );
$db->insert( [ 'title' => '后盾网' ] );
echo $db->getInsertId();
```
#### 获取受影响条数
```
$db = Db::table( 'news' );
$db->update( [ 'title' => '后盾人' ] );
echo $db->getAffectedRow();
```
- 文档已经迁移到后盾人
- 介绍
- 框架特性
- 开发规范
- 许可协议
- 作者向军
- 安装框架
- 更新框架
- 基础
- 入口文件
- 应用配置
- 优雅链接
- 目录结构
- 系统常量
- 自动加载
- 应用密钥
- 系统函数
- CSRF保护
- 依赖注入
- 跨域访问
- 配置
- 配置文件
- 基本功能
- 扩展配置
- c 函数
- 控制器
- 定义声明
- 基本使用
- 相关函数
- 响应消息
- 路由
- 基础知识
- 基础路由
- 路由参数
- 参数检测
- 依赖注入
- 控制器
- 分组路由
- RESTful
- 别名路由
- 数据
- 配置相关
- 核心操作
- 查询构造器
- 日志记录
- 分页处理
- 事务处理
- 函数相关
- 数据库
- 数据迁移
- 数据填充
- 模型
- 定义模型
- 模型动作
- 模型验证
- 自动完成
- 自动过滤
- 字段保护
- 数据填充
- 多表关联
- 分页处理
- 仓库
- 数据仓库
- 查询规则
- 视图
- 基础知识
- 模板配置
- 模板文件
- 分配数据
- 系统标签
- 扩展标签
- 缓存模板
- 模板继承
- 视图函数
- widget
- vue组件
- 中间件
- 中间件
- 缓存
- 基本操作
- 文件缓存
- 数据表缓存
- 服务
- 服务容器
- 定制服务
- 相关函数
- 请求
- 基本使用
- 请求扩展
- 测试
- 基础知识
- 基本使用
- HTTP测试
- 调试
- 调试模式
- 日志管理
- 组件
- 多语言
- 响应处理
- Cookie
- Session
- 验证码
- XML
- 自动验证
- 文件处理
- 压缩解压
- RBAC
- 数组增强
- 分页管理
- 图像处理
- 生成静态
- 加密解密
- 字符串
- 数据集合
- 工具服务
- 目录操作
- 邮件发送
- CURL
- QQ登录
- 数据备份
- 购物车
- 日志处理
- 命令组件
- 二维码
- 后盾云
- 日期处理
- 阿里
- 支付宝
- 阿里云直播
- 阿里云短信
- 阿里云邮件
- 阿里云OSS
- SOCKET
- 启动与关闭
- 前端
- 微信