update
参数说明备注$param 要更新的内容在一维数组以 '更新的值数据库字段' => '更新值' 填写
对于筛选,不参与更新的,则存放于一个 名为'noset' 的数组中。如下代码所示
- $data = array(
- 'group_id' => '3' //更新字段的值,即将符合条件的用户的用户组调整ID为3.
- 'noset' => array( //noset数组表示本数组内的任何数据都不参与更新行为
- 'condition_group_id' => '2', //用户组筛选条件
- 'user_id' => '200' //用户ID筛选条件
- )
- );
必填$fieldType字段类型绑定,与占位符长度一致的数组非必填。字段绑定具体请参阅PHP官网
内容需要进行更新,PESCMS提供了update()方法。update() 也是通过数组形式进行,不过需要注意的时,update()方法需要用到一个二维数组形式进行预处理,有别于其他方法。本章必须认真阅读理解,否则你很容易掉坑里面!
现在我们需要将用户组ID为2且用户ID大于200的用户调整为用户组ID为3。具体的代码如下:
- <?php
- $data = array(
- 'group_id' => '3' //更新字段的值,即将符合条件的用户的用户组调整ID为3.
- 'noset' => array( //noset数组表示本数组内的任何数据都不参与更新行为
- 'condition_group_id' => '2', //用户组筛选条件
- 'user_id' => '200' //用户ID筛选条件
- )
- );
- $this->db('user')->where('user_id > :user_id AND group_id = :condition_group_id')->update($data);//执行成功将返回影响行数,失败则返回false
- //生成的SQL语句:
- //UPDATE pes_user SET group_id = 3 WHERE user_id > '200' AND group_id = '2';
上述示例中,位于一维数组内的内容,即 'group_id' => '3' ,该键值表示对应的待更新表字段,内容为更新的内容。而noset旗下的数组,键值为筛选条件绑定的预处理参数,内容为绑定参数的值。
为何要做得这么麻烦呢?由于PDO预处理绑定的参数名称只能一个对一个,且为了更新语句的快捷,便引入一个二维数组noset进行封装不参与内容更新的绑定参数!
注:update() 方法的行为属于覆写数据。若您需要进行字段数据追加,请编写原生的SQL语句。请参考《原生SQL》