thinkphp更新update操作

更新(Update)

在ThinkPHP中使用save方法更新数据库,并且也支持连贯操作的使用。
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.com';
  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.com';
  6. $User->save($data); // 根据条件保存修改的数据
如果id是数据表的主键的话,系统自动会把主键的值作为更新条件来更新其他字段的值。
还有一种方法是通过create或者data方法创建要更新的数据对象,然后进行保存操作,这样save方法的参数可以不需要传入。
  1. $User = M("User"); // 实例化User对象
  2.  // 要修改的数据对象属性赋值
  3. $data['name'] = 'ThinkPHP';
  4. $data['email'] = 'ThinkPHP@gmail.com';
  5. $User->where('id=5')->data($data)->save(); // 根据条件保存修改的数据
使用create方法的例子:
  1. $User = M("User"); // 实例化User对象
  2.  // 根据表单提交的POST数据创建数据对象
  3. $User->create();
  4. $User->save(); // 根据条件保存修改的数据
上面的情况,表单中必须包含一个以主键为名称的隐藏域,才能完成保存操作。
如果只是更新个别字段的值,可以使用setField方法。
setField 更新某个字段的值
用法 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.com');
  4. $User-> where('id=5')->setField($data);
2
而对于统计字段(通常指的是数字类型)的更新,系统还提供了setInc和setDec方法。
setInc /setDec 字段增长/字段减少
用法

setInc($field,$step=1)字段值增长


setDec($field,$step=1)字段值减少

参数

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值