我正在尝试使用 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 数组的命名来进行文件上传。 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];
}