加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

ThinkPHP5.0数据库CURD的更新(Update)操作

发布时间:2022-10-15 14:30:47 所属栏目:MySql教程 来源:未知
导读: 更新操作指更改数据表记录的单个或者多个字段,下面是示例代码:
// 更新记录
Db::table('data')
->where('id', 8)
->update(['name' => "framework"]);
出于数据安全考虑,ThinkPHP的upda

更新操作指更改数据表记录的单个或者多个字段,下面是示例代码:

// 更新记录

Db::table('data')

->where('id', 8)

->update(['name' => "framework"]);

出于数据安全考虑,ThinkPHP的update方法必须使用更新条件而不允许无条件更新,如果没有指定更新条件,则会从更新数据中获取主键作为更新条件,例如当id是主键的时候下面的写法依然有效:

// 更新记录

Db::table('data')

->update(['id' => 8, 'name' => "framework"]);

可以过滤需要更新的字段列表,例如只允许更新name字段的值(假设data表还存在email字段)

大掌门91版更新库_数据库更新操作_库更新

// 更新记录

Db::table('data')

->field(['name'])

->where('id', 8)

->update([

'name' => 'framework',

'email' => 'thinkphp@qq.com'

]);

实际更新的字段只有name,email字段的数据会被忽略。一般来说,update方法用于更新数据的多个字段数据库更新操作,如果只是更新某个字段的值,也可以用setField方法,例如:

// 更新记录

库更新_数据库更新操作_大掌门91版更新库

Db::table('data')

->where('id', 8)

->setField('name','framework');

返回值和update方法一致,因为setField最终也是调用的update方法。对于数字类型的字段的步长更新,框架提供了两个专门的方法用于递增和递减操作。

setInc/setDec支持延时写入,延时写入的含义是会把需要递增/递减的数据缓存起来(在缓存中进行递增和递减操作),在达到指定的时间计时后才会把最终计算的缓存数据写入数据库,避免频繁操作数据库带来的性能开销,下例中延时10秒,给score字段增加1:

Db::table('user')

->where('id', 1)

->setInc('score', 1, 10);

setInc和setDec可以同时使用延时写入,系统会自动计算最终需要写入数据库的值。

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!