在同一个表中上传多个文件时出错

时间:2014-11-03 19:54:33

标签: php mysql

我在数据库中上传图片时遇到此问题。当我插入查询时,我只需点击一下即可获得3行。这是HTML文件:

 <form action="my_parser.php" method="post" enctype="multipart/form-data"> 
 <input type="file" name="file_array[]">
 <input type="file" name="file_array[]">
 <input type="file" name="file_array[]">
  <input type="submit" value="Upload all files"> 
 </form> 

这是我的PHP代码:

<?
include "../include/config.php";

?>

<?
 if(isset($_FILES['file_array'])){
    $id = $_REQUEST['id'];
     $name_array = $_FILES['file_array']['name'];
     $tmp_name_array = $_FILES['file_array']['tmp_name'];
     $type_array = $_FILES['file_array']['type'];
     $size_array = $_FILES['file_array']['size'];
     $error_array = $_FILES['file_array']['error']; 
     $image1 = $name_array[0];

        for($i = 0; $i < count($tmp_name_array); $i++){
         if(move_uploaded_file($tmp_name_array[$i], 
            "test_uploads/".$name_array[$i])){ 
            echo $name_array[$i]." upload is complete<br>";

            $add = mysql_query("insert into nn values ('        ','$image1','','')");

             echo "<img src='test_uploads/$image1'>";
             } else
              { echo "move_uploaded_file function failed for ".$name_array[$i]."<br>"; 
            }
             } 
            } 
            ?>

在数据库中,表nn有此列。 id - image1 - image2 - image3。 谢谢

1 个答案:

答案 0 :(得分:0)

让我们清理一下。

让我们设置数据库连接。对于此示例,我们正在转移到mysqli。然后我们将处理移动文件,并将文件路径存储在数据库中。

$conn = new mysqli('host', 'user', 'pass', 'db');

if(isset($_FILES['file_array'])):
    $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : false;
    if($id):
        $file_array = $_FILES['file_array'];
        for($i = 0; $i < count($file_array['tmp_name']); $i++):
            if(move_uploaded_file($file_array['tmp_name'][$i], 'test_uploads/'.$file_array['name'][$i])):
                $stmt = $conn->prepare("insert into nn values('', ?, '', '')");
                $stmt->bind_param('s', $file_array['name'][$i]);
                if($stmt->execute()):
                    echo $file_array['name'][$i].' has been uploaded successfully.';
                else:
                    echo 'Failed to upload '.$file_array['name'][$i].'. Please check the file and try again!';
                    return false;
                endif;
            endif;
        endfor;
    endif;
endif;

没有理由创造所有那些凌乱的变量。我们已经转移到支持目前的MySQLI,并且我们已经使用了准备好的声明来确保图像的名称不是恶意的,可能对您有害我们的申请。

<强>资源