【问题标题】:Inserting multiple records in for loop在for循环中插入多条记录
【发布时间】:2015-03-09 08:21:29
【问题描述】:

我试图在我的数据库中存储多条记录,但我遇到了错误。目前我有这个:

$array=array('key'=>'value');
for($i = 0; $i < $something; $i++){
    array_add($array,'key','value')
}
DB::table('table')->insert($array);

每当我var_dump($array); 它不会显示我添加到数组中的array_add 的值。

我做错了什么,我应该如何插入?

【问题讨论】:

  • 检查是否超过最大查询大小。
  • 请编辑您的帖子并显示您的插入功能。..
  • @Yair.R 我的插入就在那里...它是:DB::table('table')-&gt;insert($array); 这是在 Laravel 框架查询构建器中。
  • 至少你的数组不匹配,它开始 array('key' => 'value');而不是在 for 循环中它是 array('key', 'value');这是不同的......
  • @taliezin =&gt; 和 , 在这种情况下做同样的事情吗?我已经尝试过让它们都一样。 =&gt; 或 ,

标签: php mysql laravel


【解决方案1】:

您当前在for 循环中所做的是一次又一次地设置key =&gt; value。相反,您想将带有 key =&gt; value 的数组添加到包含所有行的数组中:

$rows = array(
    array('key' => 'value'),
    array('key' => 'value2'),
    // and so on...
);
for($i = 0; $i < $something; $i++){
    $rows[] = array('key' => 'value');
}
DB::table('table')->insert($rows);

【讨论】:

  • 如果我有 5 个标准值会怎样。我只需要为每个实例添加一行:$array[]=array('key2'=&gt;'value2');?
  • 标准值到底是什么意思。每行有 5 个相同的值?
  • 不像你有atm的第一行。该代码的第一行已经插入了一个标准值。然而,for 循环会根据$something(在我的正常代码中)始终插入不同的值,如果我想像第一行那样在 for 循环之前添加更多值怎么办?
  • 那么是的,只需添加更多行。您可以按照您在第一条评论中的建议或我的编辑显示进行操作。
  • 我仍然对查询的结果有疑问。我得到:Cannot add or update a child row: a foreign key constraint fails。我知道这意味着我试图在外键中插入的内容不存在,但我 100% 确定要插入外键中的值确实存在。它在错误中显示的查询也有点混乱。它说错误在:FOREIGN KEY (company_id) REFERENCES companies。它显示的查询是:SQL: insert into table (company_id) values (3), ('value'), etc...
【解决方案2】:

【讨论】:

  • 这不是我的问题的答案。
  • 嘿@Loko,这是一个多次更新,但您可以使用相同的方法来执行多次插入。
【解决方案3】:

更多的是评论而不是答案...完全未经测试的代码...

鉴于我对问题的解释 - 我认为代码应该是这样的......

如果您想添加多个记录,则需要一个包含“newRecord”的额外循环。

如果我误解了问题,请随时发布 cmets。

$allRecordsToInsert = array();

$newRecord = array();
for($i = 0; $i < $something; $i++) { // add columns to 'newRecord'
    array_add($newRecord, $curColKey, $curColValue);
}
// append new record to list of records to be inserted
$allRecordsToInsert[] = $newRecord;

DB::table('table')->insert($allRecordsToInsert);

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 2013-02-03
    • 1970-01-01
    • 2016-08-17
    • 2016-02-29
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多