开发文档 v2.x

批量插入(insertMany)

更新时间:2024年11月4日 10:59 浏览:783

批量插入多个对象或数组到数据库

public function insertMany(string $table, array $objects): array

参数:

  • string $table - 表名
  • array $objects - 要插入数据库的对象数组或二维数组,对象属性或数组键名需要和该表字段一致

返回值:

  • array( int ) - 自增主键
  • array( string ) - UUID 主键
  • array( array ) - 联合主键

跟据主键设置不同,返回值不同,插入失败时抛出异常。

 

批量插入方法可以有效防止SQL注入,执行时先编译 SQL 横板,然后再通过占位符 循环 注入数据。

 

对象数组形式:

$objs = [];

$obj1 = new stdClass();
$obj1->name = '马云';
$obj1->age = '50';
$objs[] = $obj1;

$obj2 = new stdClass();
$obj2->name = '刘强东';
$obj2->age = '40';
$objs[] = $obj2;

$ids = Be::getDb()->insertMany('user', $objs);

将编译 SQL

INSERT INTO `user` (`name`, `age`) VALUES (?, ?);

再循环注入多行数据

['马云', '50'];
['刘强东', '40'];

 

二维数组形式:

$arrs = [
    [
        'name' => '马云', 
         'age' => '50',
    ],
    [
        'name' => '刘强东',
         'age' => '40',
    ]
];

$ids = Be::getDb()->insertMany('user', $arrs);

 

导航