# 核心操作
數據庫查詢構造器 (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
- 啟動與關閉
- 前端
- 微信