通用接口
addslashes的处理
仅insert(),update(),delete() 方法对传入其的数组形式的参数进行 intval 或 addslashes 安全处理,字符串形式的参数将不处理。
SQL 语句 format 的支持
例:查询20个用户uid大于100的用户数据,以uid为返回结果数组的key $arr = DB::fetch_all('SELECT * FROM %t WHERE uid>%d LIMIT %d', array('user', '100', '20'), 'uid');
支持的fomat有:
%t | DB::table() |
%d | intval() |
%s | addslashes() |
%n | in IN (1,2,3) |
%f | sprintf('%f', $var) |
%i | 直接使用不进行处理 |
建议所有的查询语句都使用上述格式方式,以增强安全性。
返回值的处理
在非UNBUFFERED的情况下:INSERT SQL 语句返回 insert_id();UPDATE 和 DELETE SQL 语句返回 affected_rows()
常用操作符(具体实现代码查看./core/class/dzz/dzz_database.php)
DB::table($table) $table为不带表前缀的表名称 返回完整的表名称供查询使用;
DB::limit($start,$limit=0) 返回mysql查询的limit限定条件;
DB::order($field, $order = 'ASC') 返回mysql查询的order by限定条件;
DB::field($field, $val, $glue = '=') 根据$glue值返回mysql查询的where限定条件,$glue可用值:=、+、-、|、&、^、>、<、<>、<=、>=、like、in、notin;
DB::fetch_all($sql, $arg = array(), $keyfield = '', $silent=false) 数组方式返回查询多条记录数据,且可以设置数据的 KEY 值使用某字段值;
DB::fetch_first($sql, $arg = array(), $silent = false) 数组方式返回一条记录;
DB::result_first($sql, $arg = array(), $silent = false) 返回一条记录的第一个字段的值;
DB::query($sql, $arg = array(), $silent = false, $unbuffered = false) 通用查询语言,返回查询结果;
DB::insert($table, $data, $return_insert_id = false, $replace = false, $silent = false) 插入一条数据;
DB::delete($table, $condition, $limit = 0, $unbuffered = true) 根据$condition删除符合条件的记录;
DB::update($table, $data, $condition, $unbuffered = false, $low_priority = false) 更新符合条件的记录;
更多建议: