> 官网手册 https://www.kancloud.cn/manual/thinkphp5_1/354002 ## 官方推荐写法如下 ~~~ Db::name('user') ->where('id', 1) ->update(['name' => 'thinkphp']); ~~~ 通常会这样写 ~~~ Db::name('user') ->update(['name' => 'thinkphp','id'=>1]); ~~~ 生成的SQL语句 ``` UPDATE `think_user` SET `name`='thinkphp' WHERE `id` = 1 ``` 更新某个字段的值 ~~~ Db::name('user') ->where('id',1) ->setField('name', 'thinkphp'); ~~~ 自增或自减 ~~~ // score 字段加 1 Db::table('think_user') ->where('id', 1) ->setInc('score'); // score 字段加 5 Db::table('think_user') ->where('id', 1) ->setInc('score', 5); // score 字段减 1 Db::table('think_user') ->where('id', 1) ->setDec('score'); // score 字段减 5 Db::table('think_user') ->where('id', 1) ->setDec('score', 5); ~~~ `setInc/setDec`支持延时更新,如果需要延时更新则传入第三个参数,下例中延时10秒更新。 ~~~ Db::name('user')->where('id', 1)->setInc('score', 1, 10); ~~~ ## 更新数据完整示例 更新数据页面一般由两部分组成,一部分用于展示要更新的表单字段,一部分用于处理更新的逻辑并返回结果。以下代码为直接在控制器中进行逻辑处理的方式,虽不建议如此写,但却是学习ThinkPHP最快的方式。 ~~~ //修改 public function edit(){ if(request()->isPost()) { //获取提交的数据 $data=input('post.'); //$data = Request::except('file'); //某些字段的为空判断 if(empty($data['email']) ){ $this->error('请填写邮箱账号'); } $result = db('users')->where('id', $data['id'])->update($data); if($result){ $this->success('修改成功!','index'); }else{ $this->error('修改失败!'); } }else{ //查找数据并显示,用于提交表单 $id = input('id'); $info = db('users')->where('id',$id)->find(); $this->assign('info', $info); return view('add'); } } ~~~