thinkphp更新update操作更新(Update)
在ThinkPHP中使⽤save⽅法更新数据库,并且也⽀持连贯操作的使⽤。
⽤法save($data='',$options=array())
参数data:要保存的数据,如果为空,则取当前的数据对象。
options:为数组的时候表⽰操作表达式,通常由连贯操作完成;为数字或者字符串的时候表⽰主键值。默认为空数组。
回调接⼝更新前_before_update(&$data,$options)更新成功后 _after_update($data,$options)
返回值
如果查询错误或者数据⾮法返回false
如果更新成功返回影响的记录数
相关⽅
通常配合连贯操作where、field、order等⼀起使⽤
1. $User = M("User");// 实例化User对象
2. // 要修改的数据对象属性赋值
3. $data['name']='ThinkPHP';
4. $data['email']='ThinkPHP@gmail';
5. $User->where('id=5')->save($data);// 根据条件保存修改的数据
为了保证数据库的安全,避免出错更新整个数据表,如果没有任何更新条件,数据对象本⾝也不包含主键字段的话,save⽅法不会更新任何数据库的记录。
因此下⾯的代码不会更改数据库的任何记录
1. $User->save($data);
除⾮使⽤下⾯的⽅式:
1. $User = M("User");// 实例化User对象
2. // 要修改的数据对象属性赋值
3. $data['id']=5;
4. $data['name']='ThinkPHP';
5. $data['email']='ThinkPHP@gmail';
6. $User->save($data);// 根据条件保存修改的数据
如果id是数据表的主键的话,系统⾃动会把主键的值作为更新条件来更新其他字段的值。
还有⼀种⽅法是通过create或者data⽅法创建要更新的数据对象,然后进⾏保存操作,这样save⽅法的参数可以不需要传⼊。
1. $User = M("User");// 实例化User对象
2. // 要修改的数据对象属性赋值
3. $data['name']='ThinkPHP';
4. $data['email']='ThinkPHP@gmail';
5. $User->where('id=5')->data($data)->save();// 根据条件保存修改的数据
使⽤create⽅法的例⼦:
1. $User = M("User");// 实例化User对象
2. // 根据表单提交的POST数据创建数据对象
3. $User->create();
4. $User->save();// 根据条件保存修改的数据
上⾯的情况,表单中必须包含⼀个以主键为名称的隐藏域,才能完成保存操作。
如果只是更新个别字段的值,可以使⽤setField⽅法。
2
⽤法setField($field,$value='')
参数options(可选):为数组的时候表⽰操作表达式,通常由连贯操作完成;为数字或者字符串的时候表⽰主键值。默认为空数组。
如果查询错误返回false
返回值
如果更新成功返回影响的记录数
相关⽅法必须配合连贯操作where⼀起使⽤
使⽤⽰例:
1. $User = M("User");// 实例化User对象
2. // 更改⽤户的name值
3. $User->where('id=5')->setField('name','ThinkPHP');
setField⽅法⽀持同时更新多个字段,只需要传⼊数组即可,例如:
1. $User = M("User");// 实例化User对象
2. // 更改⽤户的name和email的值
3. $data = array('name'=>'ThinkPHP','email'=>'ThinkPHP@gmail');
4. $User->where('id=5')->setField($data);
⽽对于统计字段(通常指的是数字类型)的更新,系统还提供了setInc和setDec⽅法。
setInc($field,$step=1)字段值增长
⽤法
setDec($field,$step=1)字段值减少
php修改数据库内容field:要更新的字段名。
参数
step:增长或者减少的数值,默认为1。
如果查询错误返回false
回调接⼝
如果更新成功返回影响的记录数
如果查询错误返回false
返回值
如果更新成功返回影响的记录数
相关⽅法必须配合连贯操作where⼀起使⽤
1. $User = M("User");// 实例化User对象
2. $User->where('id=5')->setInc('score',3);// ⽤户的积分加3
3. $User->where('id=5')->setInc('score');// ⽤户的积分加1
4. $User->where('id=5')->setDec('score',5);// ⽤户的积分减5
5. $User->where('id=5')->setDec('score');// ⽤户的积分减1

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。