【发布时间】:2013-08-03 02:17:53
【问题描述】:
我正在为朋友建立一个网站,并设置了一个表单,可以将多张图片上传到数据库。它只能由一个人访问,并且对公众不可见,因此为了简化编码,我忽略了许多可能对代码造成的威胁,以便让它正常工作。
HTML 很简单,只是:
<form action="(url here)" method="post" enctype="multipart/form-data">
<input type="file" name="files[]" multiple>
<input id="formbutton" type= "submit" value="Upload!">
</form>
这是我担心的php。
if(isset($_FILES['files'])){
foreach ($_FILES['files']['tmp_name'] as $key => $tmp_name){
$target="images/costume/";
$target=$target.$_FILES['files']['name'][$key];
if(move_uploaded_file($tmp_name, $target)){
$id = mysql_insert_id($con);
mysql_query("INSERT INTO costumes (id,name) VALUES ('$id','$name')");
}
}
}
所有的图片文件都上传到服务器上的目录,但只有一张图片实际存储到 MySQL 表中,并作为 ID 和文件名的一行。
我一直在绞尽脑汁,疯狂地寻找解决方案,但没有任何解决方案。我知道这与 foreach 循环有关,但我不知道该怎么做才能让我上传的每张图片在数据库中创建一行。
感谢大家的帮助。
抱歉,我正在更改,忘记切换回上一部分的原始代码:
if(isset($_FILES['files'])){
foreach ($_FILES['files']['tmp_name'] as $key => $tmp_name){
$target="images/costume/";
$target=$target.$_FILES['files']['name'][$key];
if(move_uploaded_file($tmp_name, $target)){
$id = mysql_insert_id($con);
mysql_query("INSERT INTO costumes (id,name) VALUES ('$id','$target')");
}
}
}
应该是这样的。
【问题讨论】:
-
在我看来你的 $name 变量没有在任何地方初始化。
-
我解决了这个问题。 $target 应该在那里而不是 $name,但这仍然让我回到第一格。
-
我看到什么破旧的了..我会发布
标签: php mysql database image path