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)