【发布时间】:2018-10-30 17:17:43
【问题描述】:
我想在单独的列中将多个图像插入 mysql 数据库。我可以打印所有图像名称,但无法将图像名称分隔在变量中以插入列中。我在单个提交中插入多个图像,所以当我尝试插入图像 1、2、3、4 print_r 时显示:“1.jpg2.jpg3.jpg4.jpg”。我如何将每个 *.jpg 文件分隔在单独的变量中?
[表格]
<input type="file" name="product_image[]" value="" multiple="multiple" />
[控制器]
$insert = new Products();
if(is_array($this->request->getUploadedFiles())){
$image = $this->request->getUploadedFiles();
foreach($image as $file)
{
$file->moveTo('uploads/shop/' . $file->getName());
$myvars[] = $file->getName();
}
$insert->product_image1 = $myvars[0]);
$insert->product_image2 = $myvars[1]);
$insert->product_image3 = $myvars[2]);
$insert->product_image4 = $myvars[3]);
$insert->product_image5 = $myvars[4]);
$insert->save();
}
【问题讨论】:
-
你看到
1.jpg2.jpg3.jpg4.jpg的原因是因为你在它上面做了一个print_r。循环正在运行,$file->getName()做了它应该做的事情。如果要将这些图像添加到不同的变量中,可以将它们分配给数组变量,作为每次迭代的新元素。$myvars[] = $file->getName() -
请举个例子!!我只显示主要部分的短代码。不明白如何将 $myvars 传递给 db 因为 $myvars 有多个项目
-
我按照你的说法更新了我的代码,但出现了错误:注意:数组到字符串的转换
-
这确实是一个 PHP/MySQL 问题,而不是与 Phalcon 相关的问题。如果您有 5 个字段:
field_1、field_2、field_3、field_4、field_5,并且您需要存储来自上传过程的 5 个图像,那么您可以根据每个字段的数组索引存储它们来自getUploadedFiles()的元素。您不需要循环来收集数据。当然,如果您愿意,您可以创建一个 5 元素数组,然后使用该数组将每个元素存储在一个字段中。 -
应该可以。提醒php数组从
0而不是1开始所以你必须调整数字。