0

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

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

我究竟做错了什么?

表格.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 多文件上传

4

1 回答 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];
}
于 2013-05-15T21:23:42.410 回答