BE 數據庫類提供了 quoteKey, quoteValue, escape 三個方法處理拼接到 sql 中的數據,在需要拼接 SQL 的操作中,我們都應該使用這些處理方法處理數據,以防止SQL注入。
### 鍵名處理
***
~~~
$sql = 'SELECT * FROM ' . $db->quoteKey('user');
// 相當于執行 SQL
// SELECT * FROM `user`
$sql = 'SELECT *
FROM ' . $db->quoteKey('user') . '
WHERE ' . $db->quoteKey('age') . ' < 20' ;
// 相當于執行 SQL
// SELECT * FROM `user` WHERE `age` < 20
~~~
### 寫入的值處理
***
~~~
$name = "abc'abc";
$sql = 'SELECT *
FROM ' . $db->quoteKey('user') . '
WHERE ' . $db->quoteKey('name') . ' = ' .$db->quoteValue( $name ) ;
// 對等SQL(MySQL): SELECT * FROM `user` WHERE `name` = 'abc\'abc'
// 對等SQL(Oracle): SELECT * FROM "user" WHERE "name" = 'abc\'\'abc'
~~~
### 寫入的值處理 (不帶外層引號)
***
~~~
$name = "abc'abc";
$sql = 'SELECT *
FROM ' . $db->quoteKey('user') . '
WHERE ' . $db->quoteKey('name') . ' = \'' .$db->escape($name) . ' \'' ;
// 對等SQL(MySQL): SELECT * FROM `user` WHERE `name` = 'abc\'abc'
// 對等SQL(Oracle): SELECT * FROM "user" WHERE "name" = 'abc\'\'abc'
~~~
- 系統介紹
- 安裝
- 核心工廠(Be)
- 數據庫(Db)
- 配置文件
- 連接多個庫
- 獲取多條記錄
- 對象數組(getObjects)
- 二維數組(getArrays)
- 一維數組形式(getValues)
- 獲取帶索引的多條記錄
- 對象數組(getKeyObjects)
- 二維數組(getKeyArrays)
- 鍵值對(getKeyValues)
- 獲取迭代器形式的多條記錄
- 對象數組(getYieldObjects)
- 二維數組(getYieldArrays)
- 單列數組(getYieldValues)
- 獲取單條記錄
- 對象形式(getObject)
- 數組形式(getArray)
- 單個值(getValue)
- 插入/更新/替換
- 插入(insert)
- 批量插入(insertMany)
- 更新(update)
- 批量更新(updateMany)
- 替換(replace)
- 批量替換(replaceMany)
- 快速處理(quick***)
- 其它
- 防注入
- 執行SQL
- 事務/異常處理
- 表模型(Table)
- 條件查詢(where)
- 獲取多條記錄
- 對象數組(getObjects)
- 二維數組(getArrays)
- 獲取帶索引的多條記錄
- 對象數組(getKeyObjects)
- 獲取迭代器形式的多條記錄
- 聯表查詢
- 左連接(leftJoin)
- 右連接(rightJoin)
- 內連接(innerJoin)
- 聚合
- 求和(sum)
- 匯總(count)
- 最小值(min)
- 最大值(max)
- 平均值(avg)
- 其它
- 行模型(Tuple)
- 緩存(Cache)
- 配置文件
- 如何使用
- 會話(Session)
- 配置文件
- 如何使用
- Cookie
- 主題、模板
- 主題/模板結構
- 模板繼承
- 模板包含
- 注解
- 配置文件
- 配置項驅動:整型
- 配置項驅動:字符
- 控制器權限
- 擴展(Plugin)