## 核心操作
框架默认情况下,所有的增删改查全部使用预处理语句(数据库预处理,并非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生成