## 核心操作
數據庫查詢構造器 (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();
```