**phpGrace Db 概述**
~~~
phpgrace?db?操作類以pdo為基礎、全面采用預處理機制、最大程度保證了數據操作的安全性。采用了單利模式,保證一庫一連、一表一對象!為高效開發提供了基礎。
大部分的數據操作都無需編寫復雜的sql命令,簡單配置即可。
~~~
**準備工作:數據庫信息配置**
使用數據庫操作前,請打開保證數據庫配置正確!具體操作見上一節 ^\_^
**數據操作詳解
**下文將以數據表 persons為例,數據結構 :
| 字段 | 類型 | 長度 | 作用 |
| --- | --- | --- | --- |
| id
| int | 10 | 主鍵自動增加 |
| name
| vachar | 20 | 姓名 |
| age
| int | 4 | 年齡 |
| addtime
| int | 11 | 添加時間
|
| classid
| int | 10 | 班級id 索引 |
**增加數據 add($data)**
功能:向數據表內寫入數據。
參數:數值形式的數據對象(鍵名稱對應數據表的字段名)
返回:寫入數據對應的主鍵數據值
~~~
<?php
class?indexController?extends?grace{
????public?$tableName?=?'persons';
????public?function?index(){
????????$addData??=?array('name'?=>?'grace',?'age'?=>?mt_rand(10,?200));
????????$personId?=?$this->db->add($addData);
????????if($personId){
????????????echo?'寫入數據成功,主鍵:'.$personId;
????????????echo?'<br?/>'.$this->db->getSql();
????????}else{
????????????echo?'<br?/>'.$this->db->error();
????????}
????}
}
~~~
**獲取最近一次執行的操作命令?getSql()**
功能:獲取最近一次執行的操作命令
參數:無
返回:最近一次執行的操作命令
**設置條件 where($where, $whereData)**
功能:設置sql條件(預處理機制)
參數:1、條件(使用 ? 作為展位符)2、條件占位符對應的數值(數組格式)
**刪除數據 delete()**
功能:刪除一條或者多條符合條件的數據
參數:無
返回:true / false
~~~
<?php
class?indexController?extends?grace{
????public?$tableName?=?'persons';
????public?function?index(){
????????$this->db->where('id?=??',?array(1))->delete();
????}
}
~~~
**更新數據 update()**
功能:更新符合條件的數據
參數:更新數據(數組格式,鍵名稱對應數據表的字段名)
~~~
<?php
class?indexController?extends?grace{
????public?$tableName?=?'persons';
????public?function?index(){
$data?=?array('name'?=>?'phpGrace');
????????$this->db->where('id?=??',?array(2))->update($data);
????}
}
~~~
**對指定的字段進行遞加或遞減?field()**
參數:1、字段名稱 2、遞加值 (正數遞加,負數遞減)
~~~
<?php
class?indexController?extends?grace{
????public?$tableName?=?'persons';
????public?function?index(){
????????$this->db->where('id?=??',?array(2))->field('age',?1);
????}
}
~~~
**獲取單條數據 fetch()**
功能:獲取單條數據
參數:查詢字段(可省參數,默認 \*)
返回:查詢成功返回數組形式的數據,失敗返回空(可以使用empty函數判斷)
說明:可以配合條件進行查詢
~~~
$arr?=?$personModel->where('id?=??',?array(2))->fetch();
print_r($arr);
~~~
**獲取多條數據 fetchAll()**
功能:獲取單條數據
參數:查詢字段(可省參數,默認 \*)
返回:查詢成功返回數組形式的數據,失敗返回空(可以使用empty函數判斷)
說明:可以配合條件、排序、分頁等方法進行查詢
~~~
<?php
class?indexController?extends?grace{
????public?$tableName?=?'persons';
????public?function?index(){
????????$data?=?$this->db->fetchAll();
p($data);
????}
}
~~~
**查詢排序 order()**
功能:設置排序規則
參數:排序規則
~~~
$data?=?$this->db->order('id?desc')->fetchAll();
~~~
**查詢數據截取 limit($start, $num)**
功能:設置limit,截取數據
參數:1、起始位置, 2、數據條目數
~~~
$data?=?$this->db->order('id?desc')->limit(0,?10)->fetchAll();
~~~
**執行自定義的sql命令?query($sql, $execute)**
參數:1、sql命令(如果有條件推薦使用展位符 ?), 2、占位符對應的數據(可省參數,sql命令包含占位符時傳遞)
~~~
$res?=?$this->db->query('delete?from?persons?where?id?=??',?array(2));
print_r($res);
~~~
**queryFetch 和?queryFetchAll()**
功能:使用query()函數查詢數據時后續的查詢函數,queryFetch() 用于單條數據,queryFetchAll()用于多條數據。
參數:無
返回:對應的數據(數組形式)
~~~
$this->db->query('select?*?from?persons?where?id?>??',?array(1));
$arr?=?$this->db->queryFetchAll();
print_r($arr);
~~~
**使用join() 完成多表聯合**
參數:聯合語句
示例表 classes 表結構
| 字段 | 類型 | 長度 |
| --- | --- | --- |
| id
| int | 10 |
| class\_name
| varchar | 20 |
~~~
<?php????
class?indexController?extends?grace{
????public?$tableName?=?'persons';
????public?function?index(){
????????$arr?=??$this->db->join('as?a?left?join?'.sc('db','pre').'classes?as?b?on?a.classid?=?b.id')->fetchAll('a.*,?b.class_name');
?????????print_r($arr);
????}
}
~~~
**使用page()函數完成分頁**
參數:每頁數據條目數(可省參數,默認 10條)
返回:數組格式的查詢數據
格式:array(數據, 分頁信息)
~~~
<?php
$arr?=??$this->db->page(1)->fetchAll();
print_r($arr);
~~~
**獲取sql錯誤方法?error()
**
~~~
echo?$this->db->error();
~~~
**獲取原生的pdo操作對象?getDb()**
~~~
$pdo?=??$this->db->getDb();
var_dump($pdo);
~~~
**計算數據條目總數 count()**
~~~
$count?=??$this->db->count();
echo?$count;
~~~
**指定字段的數據最大值 max(字段)**
~~~
$max?=??$this->db->max('age');
echo?$max;
~~~
**指定字段的數據最小值 min(字段)**
~~~
$min?=??$this->db->min('age');
echo?$min;
~~~
**指定字段的數據平均值 avg(字段)**
~~~
$avg?=??$this->db->avg('age');
echo?$avg;
~~~
**指定字段的數據總和 sum(字段)**
~~~
$sum?=??$this->db->sum('age');
echo?$sum;
~~~
**獲取寫入數據的主鍵值?lastInsertId()**
~~~
$res?=??$this->db->add(array('name'?=>?'grace',?'age'?=>?18,?'addtime'?=>?10585888,?'classid'?=>?1));
echo?$this->db->lastInsertId();
~~~
**獲取操作影響的數據條目數?rowCount()**
~~~
$res?=??$this->db->where('id?<??',?array(2))->delete();
echo?$this->db->rowCount();
~~~
**group by**
~~~
//原始語句
select?count('a.*'),??b.class_name?from?persons?as?a?left?join?classes?as?b?on?a.classid?=?b.id?group?by?a.classid?;
//代碼實現:
$res?=?$this->db
????????->join('as?a?left?join?'.sc('db',?'pre').'classes?as?b?on?a.classid?=?b.id')
????????->group('a.classid')
????????->fetchAll("count('a.*')?as?total,?b.class_name");
echo?$this->db->getSql().'--';
print_r($res);
~~~
**獲取mysql版本?mysqlV()**
~~~
echo?$this->db->mysqlV();
~~~
**表結構分析**
~~~
$res?=?$this->db->desc();
print_r($res);
~~~
**使用 debugSql 在控制臺內輸出執行的 sql**
~~~
public?function?index(){
????$db?=?db('names');
????$db->fetchAll();
????//?在執行sql?后調用?debugSql?即可在控制臺內輸出剛剛執行的sql?命令
????$db->debugSql();
????$db->fetchAll("name");
????//?在執行sql?后調用?debugSql?即可在控制臺內輸出剛剛執行的sql?命令
????$db->debugSql();
}
~~~
- 序言
- 環境需求
- 目錄結構&命名規則
- 初始化
- 第一章 控制器與路由
- 1.1 創建控制器
- 1.2 基礎控制器
- 1.3 url 解析規則
- 第二章 數據與模型
- 1.1 數據庫配置
- 1.2 獲取數據庫操作對象
- 1.3 數據庫操作(CRUD)
- 1.4 數據分頁詳解
- 1.5 phpGrace事務處理
- 1.6 數據驗證
- 1.7 表單令牌
- 1.8 全局模型創建與調用
- 第三章 視圖
- 1.1 創建視圖文件
- 1.2 視圖調用及引用
- 1.3 視圖文件路徑模式
- 第四章 會話機制
- 1.1 cookie 操作
- 1.2 文件型 SESSION
- 1.3 memcache形式的 SESSION
- 1.4 redis 形式的 SESSION
- 第五章 緩存機制
- 1.1 緩存的概述和配置
- 1.2 文件型緩存
- 1.3 memcache 形式的緩存
- 1.4 redis 形式的緩存
- 第六章 配置、常量、語言
- 1.1 全局配置、分組配置
- 1.2 預定義常量
- 1.2 語言包使用說明
- 第七章 工具大全
- 1.1 函數小工具
- 1.2 函數工具庫
- 第八章 安全與擴展
- 1.1 框架部署安全
- 1.2 phpGrace 安全概述
- 1.3 phpGrace 擴展說明
- 實戰項目(內容管理系統)
- 前端實戰graceui
- 項目API接口實戰