使用数组将质量插入表中

时间:2015-03-16 00:59:20

标签: php mysql arrays laravel

我在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'。

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

3 个答案:

答案 0 :(得分:1)

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

而不是像那样初始化$insert(第4行):

$insert[] = array();

试试:

$insert = array();

答案 1 :(得分:0)

我相信你要添加一个额外的数组:

...试

    $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

答案 2 :(得分:0)

我只是想到我是个白痴(对不起)。

我的代码总是有效但我从未意识到我能够在PHPmyadmin中更改表的页面,并且认为我不能添加超过30条记录,但其他记录在其他页面中的位置。所以总共有140个来自多个测试的记录。 2天浪费在这里的人,我的截止日期减少了2天。感谢所有帮助过你的人。