【问题标题】:Mass insert into table using array使用数组批量插入表
【发布时间】:2015-05-18 01:18:06
【问题描述】:

我在 PHP 框架 - Laravel 的帮助下进行编码。此代码用于将图像上传到 Amazon S3 并将每个图像信息存储到 MySQL 表中:

$created_at = new DateTime;
$aws_path   = 'path/to/folder';
$files      = Input::file('images');
$insert[]   = array(); #Initialize array for mass inserting into table

foreach($files as $file) {

        # Image data

        $image_id = mt_rand(1000000000,9999999999);
        $extension= $file->guessClientExtension();
        $filename = $aws_path.'/'.$image_id.".".$extension;
        $path = $file->getRealPath();

        #UPLOAD IMAGE TO AMAZON S3
        $obj = array(
            'Bucket'     => 's3.bucket.com',
            'Key'        => $filename,
            'SourceFile' => $path,
            'ACL'        => 'public-read',
        );
        AWS::get('s3')->putObject($obj);

        $insert[] = array(
            'car_id'            => $car_id,
            'image_id'          => $image_id,
            'image_extension'   => $extension,
            'is_main'           => true,
            'created_at'        => $created_at
        );
}

DB::table('images')->insert($insert); #THIS LINE DOESN'T WORK

现在,这段代码可以工作 100% 除了我无法向我的表提交数据,$insert 变量应该填充数据每个图像,然后在 foreach 循环结束后,我将 $insert 上的数据“插入”到名为“images”的表中。

我没有收到任何错误,它只是不起作用。为什么会这样?提前致谢。

【问题讨论】:

    标签: php mysql arrays laravel


    【解决方案1】:

    我刚刚发现我是个白痴(对不起)。

    我的代码总是有效,但我从来没有意识到我能够在 PHPmyadmin 中更改表格的页面,并且坚持我无法添加超过 30 条记录,但其他记录在其他页面中。因此,我总共有 140 条来自多个测试的记录。在这里浪费了 2 天,我的截止日期少了 2 天。感谢所有帮助过你的人,你永远都是对的。

    【讨论】:

      【解决方案2】:

      $insert 数组的第一个元素是一个空数组。

      不要像那样初始化$insert(在第4行):

      $insert[] = array();
      

      试试看:

      $insert = array();
      

      【讨论】:

      • 感谢您的帮助,但我尝试了两种方法,也没有成功
      • 我刚刚发现了错误@alfallouji,您可以在此页面中阅读它(我回答我自己的问题),但您也是对的。
      【解决方案3】:

      我相信您正在添加一个额外的数组:

      试试……

          $insert = array(
              'car_id'            => $car_id,
              'image_id'          => $image_id,
              'image_extension'   => $extension,
              'is_main'           => true,
              'created_at'        => $created_at
          );
      

      http://laravel.com/docs/4.2/queries

      【讨论】:

      • 尝试检查您的表架构并将其与插入进行比较。我会在直接 sql 中获得一个原始工作插入以进行测试,然后将其转换为 laravel 格式
      • 如果我在 foreach 循环中使用它并且不使用数组进行大规模插入,它会完美工作
      • 对不起@Vladimir Ramik,我刚刚发现了你可以在这个页面中阅读的错误(我回答了我自己的问题),但你也是对的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多