如何将多个文件上传到mysql中

时间:2015-08-21 17:10:57

标签: php mysql rows

我编码了这么远,但我唯一的问题是,当用户上传多张图片时,我无法为同一用户ID保存多行。代码工作得很好,我的意思是多个文件被插入文件系统文件夹/根目录,但数据库中的引用不会退出工作。它只插入第一个上传的文件而不是第二个文件上传。

这是我的代码:

<?php 
 if(isset($_POST['go'])) {
     if(isset($_FILES['file_array'])){
        $errors= array();
        foreach($_FILES['file_array']['tmp_name'] as $key => $tmp_name ) {
            $user = $_SESSION['user_id'];
            $file_name = $key.$_FILES['file_array']['name'][$key];
            $file_size =$_FILES['file_array']['size'][$key];
            $file_tmp =$_FILES['file_array']['tmp_name'][$key];
            $file_type=$_FILES['file_array']['type'][$key];
        }
        $extensions = array("jpeg","jpg","png");     
        $file_ext=explode('.',$_FILES['file_array']['name'][$key]);
        $file_ext=end($file_ext);  
        $file_ext=strtolower(end(explode('.',$_FILES['file_array']['name'][$key])));  
        if(in_array($file_ext,$extensions ) === false) {
            $errors[]="extension not allowed";
        }  
        if($_FILES['file_array']['size'][$key] > 2097152) {
            $errors[]='File size must be less tham 2 MB';
        }
        $query = array();
        $myarray = '';
        if(is_array($query)) {
            foreach ($query as $row) {
                $query[] = '('.$row['ID'].',"'.$row['FILE_NAME'].'", "'.$row['FILE_TYPE'].'", "'.$row['FILE_SIZE'].'")';        
            }
        }
        $dir = "users_data/profile/users_posted_data/";

        if(empty($errors)==true) {
            if(is_dir($dir)==false){
                mkdir("$dir/", 0700);
            } 
            if(is_dir("$dir/".$file_name)==false) {
                move_uploaded_file($file_tmp,"$dir/".$file_name);
            } else {
                $new_dir="$dir/".$file_name.time();
                rename($file_tmp, "$dir/".$file_name);
            }
            $query_run = mysqli_query($mysqli, 'INSERT INTO table (ID, FILE_NAME,FILE_SIZE, FILE_TYPE) VALUES '.implode(',', $query));
        } else {
            print_r($errors);
        }

        if(empty($error)) {
            echo "Success";
        }
    }
}
?>

1 个答案:

答案 0 :(得分:0)

您正在尝试迭代一个空数组。不知道你究竟想做什么,但这无济于事。

   $query = array();    // init array
   $myarray = '';
   if(is_array($query)) {   // test that its an array which it obviously is see 2 lines previous
       foreach ($query as $row) {    // iterate over empty array
           // add to the array we are **not** iterating over
           $query[] = '('.$row['ID'].',"'.$row['FILE_NAME'].'", "'.$row['FILE_TYPE'].'", "'.$row['FILE_SIZE'].'")';        
       }
   }