0

0

TP5的数据库操作

*文

*文

发布时间:2017-12-29 18:04:42

|

5833人浏览过

|

来源于php中文网

原创

操作数据库是项目运行的基础,tp5中给我们提供了非常便利的操作方法。本文分享了tp5操作数据库的方法,通过实例进行讲解,希望对大家有所帮助。

setField 更新某字段的值 

1

    $User = M("User"); // 实例化User对象
    // 更改用户的name值
    $User-> where('id=5')->setField('name','ThinkPHP');

2     setField方法支持同时更新多个字段,只需要传入数组即可,例如:

      $User = M("User"); // 实例化User对象
    // 更改用户的name和email的值
    $data = array('name'=>'ThinkPHP','email'=>'ThinkPHP@gmail.com');
    $User-> where('id=5')->setField($data);

    而对于统计字段(通常指的是数字类型)的更新,系统还提供了setInc和setDec方法。

    $User = M("User"); // 实例化User对象
    $User->where('id=5')->setInc('score',3); // 用户的积分加3
    $User->where('id=5')->setInc('score'); // 用户的积分加1
    $User->where('id=5')->setDec('score',5); // 用户的积分减5
    $User->where('id=5')->setDec('score'); // 用户的积分减1

更新数据表中的数据

    Db::table('think_user')->where('id', 1)->update(['name' => 'thinkphp']);

    如果数据中包含主键,可以直接使用:

    Db::table('think_user')->update(['name' => 'thinkphp','id'=>1]);

    update 方法返回影响数据的条数,没修改任何数据返回 0

    如果要更新的数据需要使用SQL函数或者其它字段,可以使用下面的方式:

    Db::table('think_user')
        ->where('id', 1)
        ->update([
            'login_time'  => ['exp','now()'],
            'login_times' => ['exp','login_times+1'],
        ]);

更新某个字段的值:

    Db::table('think_user')->where('id',1)->setField('name', 'thinkphp');

            setField 方法返回影响数据的条数,没修改任何数据字段返回 0

自增或自减一个字段的值

    setInc/setDec 如不加第二个参数,默认值为1
    // 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);

延迟更新

AutoCoder
AutoCoder

真正实现后端和数据库生成的全栈AI开发平台

下载

    setInc/setDec支持延时更新,如果需要延时更新则传入第三个参数

    下例中延时10秒,给score字段增加1

    Db::table('think_user')->where('id', 1)->setInc('score', 1, 10);

    setInc/setDec 方法返回影响数据的条数

助手函数

    // 更新数据表中的数据
    db('user')->where('id',1)->update(['name' => 'thinkphp']);
    // 更新某个字段的值
    db('user')->where('id',1)->setField('name','thinkphp');
    // 自增 score 字段
    db('user')->where('id', 1)->setInc('score');
    // 自减 score 字段
    db('user')->where('id', 1)->setDec('score');

快捷更新(V5.0.5+)

    V5.0.5+以上版本封装的data、inc、dec和exp方法属于链式操作方法,可以配合update使用。

    下面举个例子说明用法:

    Db::table('data')
        ->where('id',1)
        ->inc('read')
        ->dec('score',3)
        ->exp('name','UPPER(name)')
        ->update();

相关推荐:

TP5之Auth权限管理实例

TP5 自动加载机制详解

TP5 Model 功能总结

相关专题

更多
c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

42

2026.01.23

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

46

2026.01.23

yy漫画官方登录入口地址合集
yy漫画官方登录入口地址合集

本专题整合了yy漫画入口相关合集,阅读专题下面的文章了解更多详细内容。

202

2026.01.23

漫蛙最新入口地址汇总2026
漫蛙最新入口地址汇总2026

本专题整合了漫蛙最新入口地址大全,阅读专题下面的文章了解更多详细内容。

341

2026.01.23

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

16

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

100

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

73

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

75

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

67

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
thinkphp3.2实战开发企业网站
thinkphp3.2实战开发企业网站

共52课时 | 14万人学习

THINKPHP 5.0 手册最新版
THINKPHP 5.0 手册最新版

共213课时 | 54.3万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号