Php 尝试循环浏览图像以单独保存和记录每个图像

Php 尝试循环浏览图像以单独保存和记录每个图像,php,image-processing,pdo,foreach,Php,Image Processing,Pdo,Foreach,我正在研究一种保存和记录用户选择和发布的图像的方法 这是我的方法 public function setEventImages($event_id){ foreach($_FILES['event-images']['tmp_name'] as $tmp_name){ var_dump($imgName = $this->imgPath . $this->random_name . $_FILES['event-images'

我正在研究一种保存和记录用户选择和发布的图像的方法

这是我的方法

public function setEventImages($event_id){
            foreach($_FILES['event-images']['tmp_name'] as $tmp_name){ 
                var_dump($imgName = $this->imgPath . $this->random_name . $_FILES['event-images']['name']);
                move_uploaded_file($tmp_name, $imgName);
                $stmt = $this->dbh->prepare("INSERT INTO table_name (event_image_name, event_id) VALUES (?,?)");
                $stmt->bindParam(1, $imgName, PARAM_STR);
                $stmt->bindValue(2, $event_id, PARAM_INT);
                $stmt->execute();
            }
        }
我是否通过引用
foreach()
循环中的
['tmp\u name']
正确地循环了每个图像

var\u dump()
返回:

字符串(38)“img/事件图像/9596177294458547数组”


为什么不显示每个文件的名称?

如果我理解得很好,我认为这部分:

var_dump($imgName = $this->imgPath . $this->random_name . $_FILES['event-images']['name']);
应该是

 var_dump($imgName = $this->imgPath . $this->random_name . $tmp_name);

当您使用foreach将数组的每个值分配给$tmp_name时,您正在插入整个数组。

如果我理解得很好,我认为这部分:

var_dump($imgName = $this->imgPath . $this->random_name . $_FILES['event-images']['name']);
应该是

 var_dump($imgName = $this->imgPath . $this->random_name . $tmp_name);
当您使用foreach将数组的每个值分配给$tmp_name时,但当您这样做时,您正在插入整个数组

通过引用foreach()循环中的['tmp_name'],我是否确实正确地循环了每个图像

你的问题的答案是否定的

假设您的表单中有文件输入作为

<input type="file" name="event-images[]" />
<input type="file" name="event-images[]" />
<input type="file" name="event-images[]" />
您将看到
$file
是一个
array()
,它的一个键/值对是
tmp\u name=>tmp\u name\u由\u服务器分配
另一个将是
name=>original\u file\u name

请看这里的例子和参考资料

通过引用foreach()循环中的['tmp_name'],我是否确实正确地循环了每个图像

你的问题的答案是否定的

假设您的表单中有文件输入作为

<input type="file" name="event-images[]" />
<input type="file" name="event-images[]" />
<input type="file" name="event-images[]" />
您将看到
$file
是一个
array()
,它的一个键/值对是
tmp\u name=>tmp\u name\u由\u服务器分配
另一个将是
name=>original\u file\u name

请看这里的例子和参考资料

为什么要在每一轮循环中准备新语句并绑定新变量?为什么要在每一轮循环中准备新语句并绑定新变量?我想在末尾添加当前映像的名称,而不是tmp目录。我想在末尾添加当前映像的名称,而不是tmp目录。