检查在php中的字段数组中是否选择了文件

时间:2016-04-17 19:04:08

标签: php multiple-file-upload

我必须更新由多个文件输入类型字段组成的数据库。 所有输入字段的名称都相同。

<input type="text" name="title[]">
<input type="file" name="image[]">
<input type="text" name="title[]">
<input type="file" name="image[]">
<input type="text" name="title[]">
<input type="file" name="image[]">

现在并非强制要求选择所有图像,可能会更改所有标题但仅选择第3张图像。现在我只想在选择图像时上传文件,否则转义上传。

这是行动页面:

    <?php
      $title = $_POST['title'];

$upload = 0;
    for($i=0; $i<sizeof($title); $i++)
    {
       if(!empty($_FILES['image'][$i]))
       {
           // upload file and set flag upload=1
       } else {
           // set flag upload=0
       }

       if($upload == 1)
       {
          $qry = "UPDATE <table_name> SET title='$title[$i]', image='$image' WHERE <match found>";
          // execute $qry
       } else {
          $qry = "UPDATE <table_name> SET title='$title[$i]' WHERE <match found>";
          // execute $qry
       }
    }

但每次选择图像时,只有else语句正在运行事件,即使未选择图像也是如此。

  

更新2:print_r($_FILES);

的结果
Array
(
    [image] => Array
        (
            [name] => Array
                (
                    [0] => 
                    [1] => Selection_238.png
                    [2] => 
                )
            [type] => Array
                (
                    [0] => 
                    [1] => image/png
                    [2] => 
                )
            [tmp_name] => Array
                (
                    [0] => 
                    [1] => /tmp/phpqSB0Jn
                    [2] => 
                )
            [error] => Array
                (
                    [0] => 4
                    [1] => 0
                    [2] => 4
                )
            [size] => Array
                (
                    [0] => 0
                    [1] => 72259
                    [2] => 0
                )
        )
)

第二个输入字段中的选定图像

1 个答案:

答案 0 :(得分:1)

首先,您需要在代码=中将==更改为if($upload = 1)。因为=assignment运算符而不是comparison运算符。

检查它,可能是你的问题解决了。否则请检查以下可能的解决方案

<强> 1

<?php
  $title = $_POST['title'];

for($i=0; $i<sizeof($title); $i++)
{
   if(!empty($_FILES['image']['name'][$i]))
   {
       // check if file uploaded then run below query
        $qry = "UPDATE <table_name> SET title='$title[$i]', image='$image' WHERE <match found>"; // you can apply if else here based on move_uploaded_file output       
   } else {
       // set flag upload=0
        $qry = "UPDATE <table_name> SET title='$title[$i]' WHERE <match found>";
   }
}
?>

<强> 2

<?php
  $title = $_POST['title'];
    $upload = 0; // define here
for($i=0; $i<sizeof($title); $i++)
{
   if(!empty($_FILES['image']['name'][$i]))
   {
       // upload file and set flag $upload = 1
   } else {
       // set flag $upload = 0
   }

   if($upload == 1) // you need to change = (assignment) to  == (comparision)
   {
      $qry = "UPDATE <table_name> SET title='$title[$i]', image='$image' WHERE <match found>";
      // execute $qry
   } else {
      $qry = "UPDATE <table_name> SET title='$title[$i]' WHERE <match found>";
      // execute $qry
   }
}
?>