php查询更新数据库数据类型,更新Update
[TOC]
#### Db类实现
~~~
Db::table('user')
->where('id', 1)
->update([
'name' => 'topthink',
'email' => 'topthink@qq.com',
]);
~~~
#### 模型实现
~~~
$user = User::get(1);
$user->name = 'topthink';
$user->email = 'topthink@qq.com';
$user->save();
~~~
或者使用
~~~
$user = User::get(1);
$user->save([
'name' => 'topthink',
'email' => 'topthink@qq.com',
]);
~~~
#### 查找并更新
在取出数据后,更改字段内容后更新数据。
主键匹配更新
~~~
$user = User::get(1);
$user->name = 'thinkphp';
$user->email = 'thinkphp@qq.com';
$user->save();
~~~
匹配条件更新
~~~
//增加解封标记
BanModel::where('uid', $id)
->where('operation', 1)
->update(['unsealed' => 1]);
~~~
#### 直接更新数据
也可以直接带更新条件来更新数据
~~~
$user = new User;
// save方法第二个参数为更新条件
$user->save([
'name' => 'thinkphp',
'email' => 'thinkphp@qq.com'
],['id' => 1]);
~~~
上面两种方式更新数据,如果需要过滤非数据表字段的数据,可以使用:
~~~
$user = new User();
// 过滤post数组中的非数据表字段数据
$user->allowField(true)->save($_POST,['id' => 1]);
~~~
如果你通过外部请求提交参数来赋值给模型,并且希望指定某些字段写入,可以使用:
~~~
$user = new User();
// post数组中只有name和email字段会写入
$user->allowField(['name','email'])->save($_POST, ['id' => 1]);
~~~
#### 静态调用
~~~
User::update([
'name' => 'topthink',
'email' => 'topthink@qq.com',
], ['id' => 1]);
~~~
save方法返回影响的记录数,而update方法返回的则是模型的对象实例。
模型和Db更新方法的最大区别是模型的更新方法只会更新有变化的数据,没有变化的数据是不会更新到数据库的,如果所有数据都没变化,那么根本就不会去执行数据库的更新操作。
所以你其实会发现后面的模型更新方法其实根本没执行(因为模型的更新数据和原有数据是一样的,没任何变化,当然你有对数据作了自动操作另当别论),但你更改name或者email属性的值的话,就会发现执行了更新操作。
更新操作用法小结:
| 方法|作用|返回值|
| --- | --- | --- |
|save| 更新数据 | 影响的记录数 |
| update| 更新数据(静态) | 返回模型对象实例 |
#### 批量更新数据
可以使用saveAll方法批量更新数据,例如:
~~~
$user = new User;
$list = [
['id'=>1, 'name'=>'thinkphp', 'email'=>'thinkphp@qq.com'],
['id'=>2, 'name'=>'onethink', 'email'=>'onethink@qq.com']
];
$user->saveAll($list);
~~~
#### 自动识别
我们已经看到,模型的新增和更新方法都是save方法,系统有一套默认的规则来识别当前的数据需要更新还是新增。
1. 实例化模型后调用save方法表示新增;
2. 查询数据后调用save方法表示更新;
3. save方法传入更新条件后表示更新;
如果你的数据操作比较复杂,可以显式的指定当前调用save方法是新增操作还是更新操作。
php查询更新数据库数据类型,更新Update相关推荐
- mysql语句批量更新数据库_sql 更新批量数据库语句
JDBC(六)批量处理sql 批量更新是分组在一起的一批更新,并以"批量"方式发送到数据库,而不是逐个发送更新. 一次发送一批更新到数据库,比一个一个发送更快,等待每个更新完成. ...
- 博客SQL-Server更新数据库UPDATE语法读书笔记[图]
最近在研究博客网站,其实在很多年以前,博客是非常流行的,那时候互联网还处于发展的初级阶段,尤其是在中国地区,因此出现了国内-国外两大博客系统,分别是zblog和wordpress程序,当然了,很显然是 ...
- 到底是先更新数据库还是先更新缓存?
很多小伙伴最近都在问我,在系统中引入缓存后,当向数据库中写入数据时,是先写数据库还是先写缓存呢?先写数据库和先写缓存有什么区别吗?今天,我们就一起来聊聊这个话题. 从本质上讲,无论是先写数据库还是先写 ...
- 高并发场景下,到底先更新缓存还是先更新数据库?
在大型系统中,为了减少数据库压力通常会引入缓存机制,一旦引入缓存又很容易造成缓存和数据库数据不一致,导致用户看到的是旧数据. 为了减少数据不一致的情况,更新缓存和数据库的机制显得尤为重要,接下来带领大 ...
- 58一面:Redis数据更新,是先更新数据库还是先更新缓存?
作者 | ^Damon 来源 | blog.csdn.net/qq_41689567/article/details/103664475 项目部分: 1.项目背景还有项目流程 2.从抓包开始到最终显示 ...
- 两难!先更新数据库再删缓存?还是先删缓存再更新数据库?
前言 当我们在做数据库与缓存数据同步时,究竟更新缓存,还是删除缓存,究竟是先操作数据库,还是先操作缓存?本文带大家深度分析数据库与缓存的双写问题,并且给出了所有方案的实现代码方便大家参考. 本篇文章主 ...
- Redis的读更新和写更新-如何保证Redis与数据库的数据一致性
背景 日前面试的时候被问到我们项目里面使用Redis的时候是如何更新缓存的,我的回答是写操作的时候的时候把缓存删了,然后读操作的时候就会读取出来最新的值.面试管继续问:Redis的写时更新和读时更新有 ...
- Redis:缓存问题之数据不一致(更新数据库时 主动更新)
Redis:缓存问题之数据不一致(更新数据库时 主动更新) 关键词 数据源不一样(缓存和db操作非原子性) 1.延时双删 -> 2.TTL -> 3.缓存删除失败记录到日志中,利用脚本提取 ...
- PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD)
原文: PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD) PHP 5 及以上版本建议使用以下方式连接 MySQL ...
最新文章
- 爬虫9-淘宝商品信息定向爬虫
- IOS开发笔记9-C语言基础复习
- 拖尾因子大怎么调整_乳房松弛下垂怎么改善?怎么快速调整乳房松弛下垂?
- 需要按次序点击链接的网页特效
- ProgressDialog 一个使用类,多多提建议
- mysql 执行计划_mysql执行计划
- 自己动手实现权限控制(数据库表的设计)
- (87)FPGA读文件激励(readmemb)
- C和汇编如何互相调用?
- Casper 机制的历史起源:第一篇
- C#实现邮件发送的功能
- 首周任务 :asp留言板
- 详解数字音频接口DAI
- simplelink_cc13x0_sdk中GPIO的使用
- 学3d游戏建模要用到什么软件?一般用哪个软件?
- matplotlib之pyplot模块——获取或设置坐标轴刻度及标签(xticks、yticks)
- Excel中如何将文本链接转成跳转链接
- 批量清理Unity项目Library目录 降低项目空闲占用空间
- 时域采样与频域采样实验报告_光时域反射仪(OTDR)如何工作(光电读书)
- 解决AE在mac big sur系统上安装闪退打不开问题,最新After Effects 2021 for Mac中文直装(ae 2021 mac)详细安装教程
热门文章
- Google Filament 源码学习(四):Material System (三) - 材质格式 (mat)
- select下拉选项禁用
- android图片上传后台后旋转的关键原因:ExifInterface
- install - graph-tool
- C++11标准模板(STL)- 算法(std::nth_element)
- table标签中cellspacing和cellpadding,border的意思?
- 06-图3. 六度空间 (30)
- 我跟敏捷开发的故事--三面墙
- 什么是Linux发行版 以及各发行版的区别
- 数据结构之字符串插入操作