thinkphp学习09-数据库的数据新增
单数据新增
使用 insert()方法可以向数据表添加一条数据,更多的字段采用默认
public function index()
{$data = ['username' => '犬夜叉','password' => '123','gender' => '男','email' => 'wjl@163.com','price' => 999,'details' => '犬夜叉介绍'];echo Db::name('user')->insert($data);
}
返回的是影响的行数
如果你添加一个不存在的字段数据,会抛出一个异常 Exception
public function index()
{$data = ['username' => '犬夜叉','password' => '123','gender' => '男','email' => 'wjl@163.com','price' => 999,'details' => '犬夜叉介绍','cv' => "个人简历"];echo Db::name('user')->insert($data);
}
如果想强行新增抛弃不存在的字段数据,则使用 strick(false)方法,忽略异常
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 写入的区别,前者表示表中存在主键相同则报错,后者则修改
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
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()方法,可以批量新增数据,但要保持数组结构一致
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
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()方法判断是否为新增或修改的依据为,是否存在主键,不存在即新增
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 "完成";}
更新之前
更新之后