> 官網手冊[http://www.hmoore.net/manual/thinkphp5\_1/354002](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');
}
}
~~~
- 序言
- ThinkPHP官方資源
- 術語
- 根目錄
- php術語
- jwt
- 下載jwt
- 認識jwt
- 生成token
- 驗證token
- lcobucci/jwt
- 安裝
- 配置
- 生成token
- 解析令牌
- 驗證令牌
- 擴展庫jwt
- thinkPHP使用lcobucci/jwt
- phpmailer
- PHPMailer的使用
- phpMailer config
- 短信驗證嗎
- 阿里云短信驗證碼發送類
- 權限管理
- 基于thinkphp6.0
- 通用函數
- 密碼加密
- 數組
- 數據庫
- 查詢數據
- 添加數據
- 刪除數據
- 批量刪除
- 更新數據
- 請求流程
- thinkphp6安裝
- thinkphp6目錄介紹
- 單應用
- 多應用
- 配置文件
- 模型,模板與Model的區別
- .env介紹
- 入口文件
- 控制器
- model層
- 視圖層
- common公共函數
- 路由
- 命令行
- 常用thinkphp函數和方法
- 高德地圖i定位城市
- 更新日志