## 核心操作
数据库查询构造器 (query builder) 提供方便、流畅的接口,用来建立及执行数据库查找语法。在你的应用程序里面,它可以被使用在大部分的数据库操作,而且它在所有支持的数据库系统上都可以执行。
This7 框架的 CURD 的自由度超过你的想象,当开启 DEBUG 模式后,所有 SQL 语句问题均会在页面中显示,一目了然。
> 注意: This7 查询构造器使用 PDO 参数绑定,以保护应用程序免于 SQL 注入,因此传入的参数不需额外转义特殊字符。
## 预准备操作
This7支持使用预准备查询,可以完全避免SQL注入。
#### 修改操作
```
sql::execute("update news set total=:total where id=:id",[':total'=>5,':id'=>1]);
```
## 查询操作
##### 使用标识名
```
sql::query("select * from site where siteid=:siteid AND name=:name",
[':siteid'=>36,':name'=>'张三']);
```
##### 使用占位符
```
sql::query("select * from news where title like ?",['%This7%'])
```
## 常用操作
#### 查找
下面是使用原生 SQL 语句进行查询,更灵活的方式请查看 查询构造器 部分
```
sql::table('user')->where('id','>',1)->get();
```
#### 新增
```
sql::table('user')->insert(['username'=>'李四','qq'=>'123456789']);
//数组数据会过滤掉非法字段
```
#### 不存在时新增
```
$user = sql::table('user')->firstOrCreate(['username' => '李四'],['username'=>'李四','age'=>22]);
//如果不存在叫 “李四” 的用户就新增用户
```
#### 替换
```
sql::table('user')->replace(['id'=>1,'username'=>'李四','qq'=>'123456789']);
//如果字段中有主键或唯一索引,并且数据存在,replace操作将执行替换当前记录的操作
```
#### 添加并获取自增主键
如果数据表有自动递增的ID,可以使用 insertGetId 添加数据并返回该 ID
```
sql::table('user')->insertGetId(['username'=>'赵六','qq'=>'456123789']);
```
#### 更新
```
sql::table('user')->where("id",1)->update(['username'=>'This7']);
//数组数据会过滤掉非法字段
```
#### 删除
```
sql::table('user')->where('id',1)->delete();
//删除指定的主键值
sql::table('user')->delete(1);
sql::table('user')->delete([2,3,5]);
```
#### 自增一个字段值
将total字段值加2
```
sql::table("user")->where('id',1)->increment('total',2);
```
#### 自减一个字段值
```
sql::table("user")->where('id',1)->decrement('total',2);
将total字段减少2
```
#### 获取自增主键
```
$db = sql::table( 'news' );
$db->insert( [ 'title' => 'THIS7官网' ] );
echo $db->getInsertId();
```
#### 获取受影响条数
```
$db = sql::table( 'news' );
$db->update( [ 'title' => 'This7标题' ] );
echo $db->getAffectedRow();
```