php表单为特定名称上载多个图像
我已经创建了一个php表单,用户必须输入用户名并上传多个图像,后一个工作正常,但它不是复制每个图像的用户名 在表i中有两列php表单为特定名称上载多个图像,php,mysql,file-upload,Php,Mysql,File Upload,我已经创建了一个php表单,用户必须输入用户名并上传多个图像,后一个工作正常,但它不是复制每个图像的用户名 在表i中有两列image,name,但它只为第一列取值,其他列留空 php代码如下所示 <?php $size=count($_FILES["photo"]["name"]); for($i=0; $i < $size;$i++) { $name=mysql_real_escape_string($_POST['name'][$i]); $imagefile=
image
,name
,但它只为第一列取值,其他列留空
php代码如下所示
<?php
$size=count($_FILES["photo"]["name"]);
for($i=0; $i < $size;$i++)
{
$name=mysql_real_escape_string($_POST['name'][$i]);
$imagefile=mysql_real_escape_string($_FILES["photo"]["name"][$i]);
if ((($_FILES["photo"]["type"][$i] == "image/gif")
|| ($_FILES["photo"]["type"][$i] == "image/jpeg")
|| ($_FILES["photo"]["type"][$i] == "image/jpg")
|| ($_FILES["photo"]["type"][$i] == "image/pjpeg")
|| ($_FILES["photo"]["type"][$i] == "image/x-png")
|| ($_FILES["photo"]["type"][$i] == "image/png"))
&& ($_FILES["photo"]["size"][$i] < 10485760))//9 mb
{
if ($_FILES["photo"]["error"][$i] > 0)
{
$Error=$Error.' '.$_FILES["photo"]["error"];
}
else
{
$path="image/".$_FILES["photo"]["name"][$i];
move_uploaded_file($_FILES["photo"]["tmp_name"][$i],$path);
$sql="INSERT INTO restimage (name, rest_image) "."VALUES('$name','$imagefile')";
$retval = mysql_query($sql);
}
}
else
{
$Error=$Error.' '.$_FILES["photo"]["name"][$i] .' is corrupt file or not choosen ';
}
}
if($Error =="")
{
echo "images uploaded successfully";
}
else
{
echo $Error;
}
?>
像这样更改代码
<?php
$size=count($_FILES["photo"]["name"]);
$name=mysql_real_escape_string($_POST['name']);
for($i=0; $i < $size;$i++)
{
.....
}
仅指定了两列,那么它如何存储所有列
$sql="INSERT INTO restimage (name, rest_image) "."VALUES('$name','$imagefile')";
通过将上载的图像文件名放入for循环本身的额外数组,尝试将函数从for循环外上载。放置这行代码
$name=mysql_real_escape_string($_POST['name'][$i]);
出局
并将其更改为
$name=mysql_real_escape_string($_POST['name']);
它看起来像这样
<?php
$size=count($_FILES["photo"]["name"]);
$name=mysql_real_escape_string($_POST['name']);
for($i=0; $i < $size;$i++)
{
....
您是否已为循环输入日志以查看insert语句的值?您可以这样做错误日志(“Name:$Name,image:$imagefile”,3,“path/to/log/log_file.txt”)代码>。我是否需要更改此项?我做了,但它显示了此$name=mysql\u real\u escape\u字符串($\u POST['name'])的错误;你的答案和我的答案完全一样,最好在事后检查答案。事实上,两者之间存在微小但显著的差异。在您的答案中,您使用的是$name=mysql\u real\u escape\u字符串($\u POST['name'][$i])
这显然是错误的,因为$\u POST['name']
不是数组。这是一根绳子。因此,这样做有两个问题。首先,$i
在调用此函数之前未设置。其次,如果将$i
设置为说0
,那么您将得到字符串的第一个字符,这也是错误的。所以我担心我们的答案不完全是sameYes,我在复制时忘了删除它,thanks@anurupur但它显示的错误是由于..您的表单应该有'enctype=multipart/form data'
$name=mysql_real_escape_string($_POST['name']);
<?php
$size=count($_FILES["photo"]["name"]);
$name=mysql_real_escape_string($_POST['name']);
for($i=0; $i < $size;$i++)
{
....