使用PHP在MYSQL中上传多个图像时,只有从阵列上传的最后一张图像

时间:2013-05-15 21:13:58

标签: arrays file upload insert foreach

我正在尝试使用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>

Addpicture.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();
    }

    ?>

编辑:已解决 HTML 5 multi file upload with PHP

1 个答案:

答案 0 :(得分:0)

您正在使用基于PHP数组的命名进行文件上传。 PHP在$ _FILES数组中对它的处理是BEYOND moronic。

单个文件显示为

$_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];
}