更新(Update)
在ThinkPHP中使用save方法更新数据库,并且也支持连贯操作的使用。| save 更新数据到数据库 | |
|---|---|
| 用法 | save($data='',$options=array()) |
| 参数 |
data:要保存的数据,如果为空,则取当前的数据对象。 options:为数组的时候表示操作表达式,通常由连贯操作完成;为数字或者字符串的时候表示主键值。默认为空数组。 |
| 回调接口 |
更新前_before_update(&$data,$options) 更新成功后 _after_update($data,$options) |
| 返回值 |
如果查询错误或者数据非法返回false 如果更新成功返回影响的记录数 |
| 相关方法 | 通常配合连贯操作where、field、order等一起使用 |
- $User = M("User"); // 实例化User对象
- // 要修改的数据对象属性赋值
- $data['name'] = 'ThinkPHP';
- $data['email'] = 'ThinkPHP@gmail.com';
- $User->where('id=5')->save($data); // 根据条件保存修改的数据
因此下面的代码不会更改数据库的任何记录
- $User->save($data);
- $User = M("User"); // 实例化User对象
- // 要修改的数据对象属性赋值
- $data['id'] = 5;
- $data['name'] = 'ThinkPHP';
- $data['email'] = 'ThinkPHP@gmail.com';
- $User->save($data); // 根据条件保存修改的数据
还有一种方法是通过create或者data方法创建要更新的数据对象,然后进行保存操作,这样save方法的参数可以不需要传入。
- $User = M("User"); // 实例化User对象
- // 要修改的数据对象属性赋值
- $data['name'] = 'ThinkPHP';
- $data['email'] = 'ThinkPHP@gmail.com';
- $User->where('id=5')->data($data)->save(); // 根据条件保存修改的数据
- $User = M("User"); // 实例化User对象
- // 根据表单提交的POST数据创建数据对象
- $User->create();
- $User->save(); // 根据条件保存修改的数据
上面的情况,表单中必须包含一个以主键为名称的隐藏域,才能完成保存操作。
如果只是更新个别字段的值,可以使用setField方法。
使用示例:
如果只是更新个别字段的值,可以使用setField方法。
| setField 更新某个字段的值 | |
|---|---|
| 用法 | setField($field,$value='') |
| 参数 | options(可选):为数组的时候表示操作表达式,通常由连贯操作完成;为数字或者字符串的时候表示主键值。默认为空数组。 |
| 返回值 |
如果查询错误返回false 如果更新成功返回影响的记录数 |
| 相关方法 | 必须配合连贯操作where一起使用 |
- $User = M("User"); // 实例化User对象
- // 更改用户的name值
- $User-> where('id=5')->setField('name','ThinkPHP');
- $User = M("User"); // 实例化User对象
- // 更改用户的name和email的值
- $data = array('name'=>'ThinkPHP','email'=>'ThinkPHP@gmail.com');
- $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一起使用 |
- $User = M("User"); // 实例化User对象
- $User->where('id=5')->setInc('score',3); // 用户的积分加3
- $User->where('id=5')->setInc('score'); // 用户的积分加1
- $User->where('id=5')->setDec('score',5); // 用户的积分减5
- $User->where('id=5')->setDec('score'); // 用户的积分减1
本文深入解析了 ThinkPHP 框架中 save 方法的使用,包括其参数、回调接口、相关方法以及如何配合连贯操作进行数据更新。通过具体示例展示了如何利用 save 方法更新数据库数据,并介绍了 setField 和 setInc/setDec 方法的使用场景。
1588

被折叠的 条评论
为什么被折叠?



