> 官網手冊 http://www.hmoore.net/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');
}
}
~~~
- 基礎知識
- 查詢數據
- 添加數據
- 更新數據
- 刪除數據
- 批量刪除
- 編輯器的使用
- wangEditor的使用
- UEditor的使用
- ckeditor5的使用
- 圖片上傳
- 單圖上傳
- 多圖上傳
- 支付方式
- paypal
- paypal新版接入
- Excel導入導出
- PHPExcel 導出
- 標簽擴展
- 閉合標簽
- 非閉合標簽
- 郵件發送
- 阿里云短信發送
- 物流查詢
- 合成海報
- TP6.0根據IP獲取國家代碼
- TP6.0集成騰訊云短信
- TP6.0緩存的應用
- TP6.0集成JSON Web(JWT)
- TP6.0集成apiDoc 快速完成接口文檔
- TP6.0集成pjax
- 微信支付apiv3的異步通知如何驗證和接收
- PHP簽名認證
- TP6.0獲取最新省市縣三級數據并入庫
- PHP指定版本運行Composer
- linux端口占用查詢與處理