🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 核心操作 框架默认情况下,所有的增删改查全部使用预处理语句(数据库预处理,并非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); ~~~