使用 PHP 在 MYSQL 中上传多张图片时,仅从数组上传最后一张图片

问题描述 投票:0回答:1

我正在尝试使用 PHP 将多个图像从文本框上传到 MYSQL 数据库。 但不知何故,它只插入数据库中数组的最后一项。

我尝试使用一张图片上传,效果很好。

我做错了什么?

form.php:

<form action="addpicture.php?id=<?php echo $prodID; ?>" method="POST" enctype="multipart/form-data">  
    <input type="file" name="image[]" multiple/>
    <input type="submit" value="upload" name="image" class="btn btn-primary" /> 
</form>

添加图片.php:

    <?php
    session_start();
    include '../includes/config.php';

    $prodID = $_GET['id'];

    foreach(array_keys($_FILES['image']['error']) as $key){
    $temp_name = $_FILES['image']['tmp_name'][$key];
    $t_name = file_get_contents($temp_name);
    $t_name = mysql_real_escape_string($t_name);

    $insert = mysql_query("INSERT INTO tblpictures(prodID, foto) VALUES ('$prodID','$t_name')") or die(mysql_error());          

            header('location: form.php?prodID=' . $prodID);
            exit();
    }

    ?>

编辑:已解决 使用 PHP 进行 HTML 5 多文件上传

php upload
1个回答
0
投票

您正在使用基于 PHP 数组的命名来进行文件上传。 PHP 对 $_FILES 数组中的处理方式非常愚蠢。

单个文件显示为

$_FILES = array(
   'fieldname' => array('error' => ..., 'name' => '...', etc....)
);

一旦进入数组模式,您就会得到一个完全不同的结构:

$_FILES = array(
   'fieldname' => array (
       'error' => array(
            0 => 'error code of first file'
            1 => 'error code of second file'
            etc...
       )
       'name' => array(
            0 => 'first filename',
            1 => 'second filename',
            etc...
       )
   )
)

您需要循环播放:

foreach(array_keys($_FILES['image']['error']) as $key) {
    $name = $_FILES['image']['name'][$key];
    $temp_name = $_FILES['image']['tmp_name'][$key];
}
© www.soinside.com 2019 - 2024. All rights reserved.