thinkphp学习09-数据库的数据新增

单数据新增

使用 insert()方法可以向数据表添加一条数据,更多的字段采用默认

php 复制代码
public function index()
{
    $data = [
        'username' => '犬夜叉',
        'password' => '123',
        'gender' => '男',
        'email' => 'wjl@163.com',
        'price' => 999,
        'details' => '犬夜叉介绍'
    ];
    echo Db::name('user')->insert($data);
}

返回的是影响的行数

如果你添加一个不存在的字段数据,会抛出一个异常 Exception

php 复制代码
public function index()
{
   $data = [
       'username' => '犬夜叉',
       'password' => '123',
       'gender' => '男',
       'email' => 'wjl@163.com',
       'price' => 999,
       'details' => '犬夜叉介绍',
       'cv' => "个人简历"
   ];
   echo Db::name('user')->insert($data);
}

如果想强行新增抛弃不存在的字段数据,则使用 strick(false)方法,忽略异常

php 复制代码
public function index()
{
    $data = [
        'username' => '犬夜叉',
        'password' => '123',
        'gender' => '男',
        'email' => 'wjl@163.com',
        'price' => 999,
        'details' => '犬夜叉介绍',
        'cv' => "个人简历"
    ];
    echo Db::name('user')->strict(false)->insert($data);
}

如果我们采用的数据库是 mysql,可以支持 replace 写入

insert 和 replace 写入的区别,前者表示表中存在主键相同则报错,后者则修改

php 复制代码
public function index()
{
    $data = [
        'id' => 22,
        'username' => '犬夜叉',
        'password' => '123',
        'gender' => '男',
        'email' => 'wjl@163.com',
        'price' => 999,
        'details' => '犬夜叉介绍',
    ];
    Db::name('user')->replace()->insert($data);
    return Db::getLastSql();
}


使用 insertGetId()方法,可以在新增成功后返回当前数据 ID

php 复制代码
public function index()
{
    $data = [
        'username' => '孙悟空',
        'password' => '123',
        'gender' => '男',
        'email' => 'wjl@163.com',
        'price' => 11111,
        'details' => '孙悟空介绍',
    ];
    $id = Db::name('user')->replace()->insertGetId($data);
    return $id;
}

批量数据新增

使用 insertAll()方法,可以批量新增数据,但要保持数组结构一致

php 复制代码
public function index()
{
    $datas = [
        [
            'username' => '孙悟空',
            'password' => '123',
            'gender' => '男',
            'email' => 'wjl@163.com',
            'price' => 11111,
            'details' => '孙悟空介绍',
        ],
        [
            'username' => '蜡笔小新',
            'password' => '123',
            'gender' => '男',
            'email' => 'wjl@163.com',
            'price' => 2222,
            'details' => '蜡笔小新介绍',
        ],
    ];
    // 返回的是受影响的行数
    return Db::name('user')->insertAll($datas);
}


批量新增也支持 replace()方法,添加后改变成 replace into

php 复制代码
 public function index()
    {
        $datas = [
            [
                'username' => '孙悟空',
                'password' => '123',
                'gender' => '男',
                'email' => 'wjl@163.com',
                'price' => 11111,
                'details' => '孙悟空介绍',
            ],
            [
                'username' => '蜡笔小新',
                'password' => '123',
                'gender' => '男',
                'email' => 'wjl@163.com',
                'price' => 2222,
                'details' => '蜡笔小新介绍',
            ],
        ];
        Db::name('user')->replace()->insertAll($datas);
        echo Db::getLastSql();
    }

save()新增

save()方法是一个通用方法,可以自行判断是新增还是修改(更新)数据,save()方法判断是否为新增或修改的依据为,是否存在主键,不存在即新增

php 复制代码
public function index()
    {
        $data = [
            'username' => '孙悟空',
            'password' => '123',
            'gender' => '男',
            'email' => 'wjl@163.com',
            'price' => 11111,
            'details' => '孙悟空介绍',
        ];
        Db::name('user')->save($data);
        $data = [
            "id" => 22,
            'username' => '孙悟空',
            'password' => '123',
            'gender' => '男',
            'email' => 'wjl@163.com',
            'price' => 11111,
            'details' => '孙悟空介绍',
        ];
        Db::name('user')->save($data);
        echo "完成";
    }

更新之前

更新之后

相关推荐
科技小花6 小时前
全球化深水区,数据治理成为企业出海 “核心竞争力”
大数据·数据库·人工智能·数据治理·数据中台·全球化
X56617 小时前
如何在 Laravel 中正确保存嵌套动态表单数据(主服务与子服务)
jvm·数据库·python
Slow菜鸟7 小时前
AI学习篇(五) | awesome-design-md 使用说明
人工智能·学习
狐狐生风8 小时前
LangChain 向量存储:Chroma、FAISS
人工智能·python·学习·langchain·faiss·agentai
虹科网络安全8 小时前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
狐狐生风8 小时前
LangChain RAG 基础
人工智能·python·学习·langchain·rag·agentai
2301_771717218 小时前
解决mysql报错:1406, Data too long for column
android·数据库·mysql
小江的记录本9 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
dvjr cloi9 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
dFObBIMmai9 小时前
MySQL主从同步中大事务导致的延迟_如何拆分大事务优化同步
jvm·数据库·python