更新
您正在阅读旧版文档,新版文档已迁移至 [https://document.pescms.com]
目录
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》