gpt4 book ai didi

mysql - 如何在 Yii2 中进行批量数据库插入?

转载 作者:IT王子 更新时间:2023-10-29 00:38:51 27 4
gpt4 key购买 nike

我想知道你是如何在 Yii2 中做一个批量数据库 INSERT 的?

例如一个普通的 INSERT 我想要这样:

$sql = $this->db("INSERT INTO some_table(id,my_value) VALUES(:id,:my_value)");
$sql->bindValues([':id' => $id, ':my_value' => $my_value]);
$sql->execute();

现在,如果我想创建一个批量 INSERT 怎么办?

如果没有绑定(bind)值,你可以这样:

foreach ($foo as $bar) {
$data_sql .= '(' . $id . ',' "'" . $bar . "'),"
}

$data_sql = rtrim($data_sql, ',');

$sql = $this->db("INSERT INTO some_table(id,my_value) VALUES" . $data_sql);
$sql->execute();

但是如果你仍然想绑定(bind)值,你怎么能做到这一点呢?

编辑:这个问题与链接的问题不同,因为我没有使用 ActiveRecord

编辑 2:

理想情况下,如果有一个提供一定灵 active 的解决方案会很好,例如能够编写您自己的大部分语法,如下面的答案之一:

Yii::$app->db->createCommand()->batchInsert('tableName', ['id', 'title', 'created_at'], [
[1, 'title1', '2015-04-10'],
[2, 'title2', '2015-04-11'],
[3, 'title3', '2015-04-12'],
])->execute();

...不提供。对于这种特殊情况,我需要使用上述解决方案不提供的 IGNORE 语句。

最佳答案

为此有一个特殊的 batchInsert 方法:

Yii::$app->db->createCommand()->batchInsert('tableName', ['id', 'title', 'created_at'], [
[1, 'title1', '2015-04-10'],
[2, 'title2', '2015-04-11'],
[3, 'title3', '2015-04-12'],
])->execute();

关于mysql - 如何在 Yii2 中进行批量数据库插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29580900/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com