Php 使用数组向表中大量插入
我在PHP框架-Laravel的帮助下编写代码。此代码用于将图像上载到Amazon S3,并将每个图像信息存储到MySQL表:Php 使用数组向表中大量插入,php,mysql,arrays,laravel,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
$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上的数据“插入”到我的名为“图像”的表中
我很抱歉没有任何错误,它就是不起作用。为什么会这样?提前感谢。我相信您正在添加一个额外的阵列: 试试看
$insert = array(
'car_id' => $car_id,
'image_id' => $image_id,
'image_extension' => $extension,
'is_main' => true,
'created_at' => $created_at
);
您的
$insert
数组的第一个元素是空数组
不要像这样初始化$insert
(第4行):
试试看:
$insert = array();
我刚发现我是个白痴(很抱歉)
我的代码总是有效的,但我从来没有意识到我能够在PHPmyadmin中更改表的页面,并认为我不能添加超过30条记录,而是添加其他页面中的其他记录。所以我总共有140条来自多个测试的记录。人们在这里浪费了2天,比我的截止日期少了2天。感谢所有帮助您的人,您总是对的。感谢您的帮助,但我尝试了两种方法,但都没有成功。我刚刚发现了错误@alfallouji您可以在本页中阅读它(我回答我自己的问题),但您也是对的。请检查您的表架构并将其与插入内容进行比较。我会在direct sql中获得一个原始的工作插入,用于测试,然后将其转换为laravel格式。如果我在foreach循环中使用它,并且不使用数组进行大规模插入,那么它将非常有效。抱歉@Vladimir Ramik,我刚刚发现了错误,您可以在本页中阅读它(我回答我自己的问题),但您也是对的。
$insert = array();