update

参数说明备注$param 要更新的内容在一维数组以 '更新的值数据库字段' => '更新值' 填写

对于筛选,不参与更新的,则存放于一个 名为'noset' 的数组中。如下代码所示

  1. $data = array(
  2. 'group_id' => '3' //更新字段的值,即将符合条件的用户的用户组调整ID为3.
  3. 'noset' => array( //noset数组表示本数组内的任何数据都不参与更新行为
  4. 'condition_group_id' => '2', //用户组筛选条件
  5. 'user_id' => '200' //用户ID筛选条件
  6. )
  7. );

必填$fieldType字段类型绑定,与占位符长度一致的数组非必填。字段绑定具体请参阅PHP官网

内容需要进行更新,PESCMS提供了update()方法。update() 也是通过数组形式进行,不过需要注意的时,update()方法需要用到一个二维数组形式进行预处理,有别于其他方法。本章必须认真阅读理解,否则你很容易掉坑里面!

现在我们需要将用户组ID为2且用户ID大于200的用户调整为用户组ID为3。具体的代码如下:

  1. <?php
  2. $data = array(
  3. 'group_id' => '3' //更新字段的值,即将符合条件的用户的用户组调整ID为3.
  4. 'noset' => array( //noset数组表示本数组内的任何数据都不参与更新行为
  5. 'condition_group_id' => '2', //用户组筛选条件
  6. 'user_id' => '200' //用户ID筛选条件
  7. )
  8. );
  9. $this->db('user')->where('user_id > :user_id AND group_id = :condition_group_id')->update($data);//执行成功将返回影响行数,失败则返回false
  10. //生成的SQL语句:
  11. //UPDATE pes_user SET group_id = 3 WHERE user_id > '200' AND group_id = '2';

上述示例中,位于一维数组内的内容,即 'group_id' => '3' ,该键值表示对应的待更新表字段,内容为更新的内容。而noset旗下的数组,键值为筛选条件绑定的预处理参数,内容为绑定参数的值。

为何要做得这么麻烦呢?由于PDO预处理绑定的参数名称只能一个对一个,且为了更新语句的快捷,便引入一个二维数组noset进行封装不参与内容更新的绑定参数!

注:update() 方法的行为属于覆写数据。若您需要进行字段数据追加,请编写原生的SQL语句。请参考《原生SQL》