Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php表单为特定名称上载多个图像_Php_Mysql_File Upload - Fatal编程技术网

php表单为特定名称上载多个图像

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=

我已经创建了一个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=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++)
 {
 ....