gpt4 book ai didi

php - Yii 插入多条记录并返回 Id(INSERT IGNORE)

转载 作者:行者123 更新时间:2023-11-29 23:13:11 28 4
gpt4 key购买 nike

在使用多次插入时,我在尝试获取最后插入的行的 ID 时遇到一些问题。

我希望将记录插入数据库,例如使用:

$sql ="INSERT IGNORE INTO test(date, src, dst) VALUES ('2014-01-15','1','2') ('2014-01-12','9','2')";
$added = Yii::app()->db->createCommand($sql)->execute();

这很棒,因为我有动态数量的记录,我可以形成这个查询并插入所有记录(我一次处理几千条记录)。问题是我需要 id 传递给下一个方法。

我目前看不到任何获取 Id 的方法,所有搜索对我来说都是空的。因此我被迫使用这种方法作为例子。

foreach($allDataProcessed AS $v)
{
$model = new Destination;
$model->date = $v['date'];
$model->src = $v['src'];
$model->dst = $v['dst'];
if($model->ignore->save())
$ids[] = $model->id;
}

这里的问题显然是我必须与数据库交互的次数。如果我要插入 1000 条记录,我们就会从一次数据库调用增加到 1000 次数据库调用,更不用说其他方法中的任何调用了。

我已经考虑过在过程中稍后插入的可能性,但我还有许多其他方法和数据库调用等稍后发生,如果记录只是重复(其中许多将是),我宁愿不进行所有处理。

如有任何建议,我们将不胜感激。

最佳答案

希望我能帮到你!

首先要知道的是 yii 有一个方法来获取最后插入的行...

Yii::app()->db->getLastInsertID();

之后我想说,您可能有兴趣使用事务来保证一切按预期工作......我给您留下某种算法

$transaction = Yii::app()->db->beginTransaction();
// do your things as needed

// things go sweet
$transaction->commit();

// if things get wild...
$transaction->rollback();

关于php - Yii 插入多条记录并返回 Id(INSERT IGNORE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27982385/

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