## 核心操作
框架默認情況下,所有的增刪改查全部使用預處理語句(數據庫預處理,并非php模擬的預處理,如果想要更改方式可以在配置文件的opiton選項中更改)進行徹底的杜絕sql注入,提供數據庫安全性。
[TOC]
### 執行一條查詢語句
注意查詢語句和執行語句需要使用不同的方法。
~~~
/**
* 發送一條查詢sql
* @param [type] $sql [sql語句]
* @param array $params [預處理參數]
* @param bool $result [默認返回結果集,如果為false則返回pdo查詢對象]
* @return [type] [description]
*/
public function query($sql, array $params = [], $result = true)
~~~
`Db::query('select * from dream_user where uid = ?', [12])`;
返回`dream_user`表uid=12的數據
### 執行一條非查詢語句
~~~
/**
* 執行一條sql 返回受影響的行數
* @param [type] $sql [sql]
* @param array $params [預處理參數]
* @return [type] [返回受影響的行數]
*/
public function execute($sql, array $params = [])
~~~
`Db::execute("update news set total=:total where id=:id",[':total'=>5,':id'=>1])`
更新表id等于1的數據 `total`等于5
### 預處理參數
預處理參數可以是關聯數組也可以是一個索引數組,但是絕對不可以是一個關聯和索引混合的數組,如果是自己發送sql語句推薦使用關聯,如果使用框架的curd操作推薦使用索引數組。
如果使用關聯數組切記名稱前面要加`:`號,例如:`[':name'=>'username']`
不用擔心索引數組是否是從1開始的,框架在發送sql語句時會處理判斷。
## 常用操作
### 設置操作表
~~~
Db::table('table_name');
返回當前對象
~~~
### 獲取實例
默認情況下通過靜態調用的方式返回的都是單例方式,如果需要創建新的實例可以使用以下方法
~~~
Db::table('table_name')->getInstance();
或者
Db::getInstance();
Db::getInstance()->table();
~~~
### 增刪改查操作
#### 增加數據
~~~
/**
* 添加數據
* @param array $data [數據]
* @return [type] [description]
*/
public function insert(array $data = [], $action = 'insert');
Db::table('user')->insert(['username'=>'Sean']);
~~~
#### 批量添加
~~~
/**
* 批量添加
* @param array $datas [二維數組]
* @return [type] [description]
*/
public function insertAll(array $datas = []);
該方法和inser類似,不過在次基礎上擴展為一個二維數組
Db::table('user')->insertAll([['username'=>'Sean'],['username'=>'k']]);
~~~
#### 添加并且獲取自增id
~~~
/**
* 添加并獲得自增ID
* @param array $data [數據]
* @param boolean $replace [新增還是替換,默認新增]
* @param [type] $sequence [mysql不需要理會]
* @return [type] [返回新增id]
*/
public function insertGetId(array $data = [], $replace = false, $sequence = null);
$id = Db::table('news')->insertGetId(['title'=>'This is a title']);
~~~
#### 查找數據一條數據
~~~
/**
* 查詢 根據id返回一條數據
* @return [type] [主鍵id]
*/
public function find($id = null);
Db::table('user')->where('uid',1)->find();
或者
Db::table('user')->find(1);
~~~
#### 查找多條數據
~~~
/**
* 查詢
* @return [type] [description]
*/
public function get()
Db::table('user')->where('gid', 2)->get();
查找所有組id等于2的用戶
~~~
#### 返回需要的字段
~~~
/**
* 返回相應字段的數據
* @param [type] $field [字段]
* @param boolean $all [是否返回所有數據僅僅在字段只有一個時有效]
* @return [type] [description]
*/
public function getField($field, $all = false)
獲取用戶名
Db::table('user')->where('uid', 1)->getField('username');
結果:sean
返回當前組所有的用戶名
Db::table('user')->where('gid', 1)->getField('username', true);
// 結果是一個一維數組
返回當前組所有的用戶id和用戶名
Db::table('user')->where('gid', 1)->getField('uid,username');
~~~
#### 修改
~~~
/**
* 更新表數據
* @return [type] [description]
*/
public function update(array $data = [])
Db::table('user')->where('uid', 1)->update(['gid'=>2]);
修改用戶表 用戶id等于1的數據 修改用戶組id等于2
~~~
#### 存在修改不存在新增
~~~
/**
* 替換 存在修改 不存在新增加
* @param array $data [數據]
* @param [type] $sequence [oracle或者pgsql的自增序列]
* @return [type] [返回新增id失敗返回false]
*/
public function replace(array $data = [], $sequence = null)
Db::table('user')->where('uid', 1)->replace(['uid'=>2]);
修改uid數據如果存在修改為2不存在新增一個uid=2的用戶
~~~
#### 刪除數據
~~~
/**
* 刪除數據
* @param [type] $id [主鍵id]
* @return [type] [description]
*/
public function delete($id = null)
如果沒有id必須存在 where條件
刪除用戶id等于1的數據
Db::table('user')->where('uid', 1)->delete();
或者
Db::table('user')->delete(1);
~~~
#### 自增
~~~
/**
* 增加
* @param [type] $field [字段]
* @param integer $step [自增大小默認1]
* @return [type] [description]
*/
public function inc($field, $step = 1)
Db::table('user')->where('uid', 1)->inc('login_time')->update();
或者
直接自增
Db::table('user')->where('uid', 1)->setInc('login_time');
~~~
#### 自減
~~~
/**
* 減少
* @param [type] $field [字段]
* @param integer $step [自增大小默認1]
* @return [type] [description]
*/
public function dec($field, $step = 1)
Db::table('user')->where('uid', 1)->dec('login_time')->update();
或者
直接自減
Db::table('user')->where('uid', 1)->setDec('login_time', 3);
~~~
- 簡介
- 開發規范
- 許可協議
- 作者
- 安裝框架
- 更新日志
- 基礎
- 入口文件
- 全局變量
- 系統配置
- 目錄結構
- 系統常量
- 自動加載
- 系統函數
- 應用密匙
- 依賴注入
- 配置
- 說明
- 基本使用
- 擴展應用
- C函數
- 容器
- 介紹
- 使用容器
- 綁定服務
- 數組訪問
- 請求
- 基礎
- 函數常量
- 獲取信息
- 方法偽造
- 路由
- 基礎使用
- 域名路由
- 靜態路由
- 正則路由
- 路由分組
- 地區
- 資源路由
- 閉包
- 其它方法
- 響應
- 響應輸出
- session
- 設置
- 生命周期數據
- cookie
- 加密使用
- 中間件(鉤子)
- 基礎使用
- 保存到文件
- 數據
- 配置
- 核心操作
- 聚合查詢
- 查詢構造器
- 關系型數據庫關聯
- 事務處理
- 日志
- 日志
- 視圖
- 模板配置
- 模板文件
- 模板語言
- 基礎使用
- 內置標簽
- 擴展標簽庫
- 模板
- 變量輸出
- 原樣輸出
- 運算符
- 緩存
- 緩存配置
- 基本操作
- 多語言
- 基礎使用
- 擴展庫
- 數據驗證
- xml
- 壓縮
- 工具類
- 字符串
- 文件上傳
- 目錄操作
- 二維碼
- 驗證碼
- 圖片處理
- curl
- url生成