Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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,多个文件上传,并获取每个文件上传到mysql的路径_Php_Mysql_File Upload_Upload - Fatal编程技术网

PHP,多个文件上传,并获取每个文件上传到mysql的路径

PHP,多个文件上传,并获取每个文件上传到mysql的路径,php,mysql,file-upload,upload,Php,Mysql,File Upload,Upload,我找到了这个代码,可以上传多个文件 我修改了一点代码,以获得上传/子目录文件夹,每个上传集都有唯一的id;所以这些文件也会得到一个唯一的id $dir=substr(uniqid(),-7); // Uniqid for subdirectory $path = "uploads/$dir/"; // uploads/subdirectory/ mkdir($path, 0700); // Make directory $valid_formats = array("jpg", "png", "

我找到了这个代码,可以上传多个文件

我修改了一点代码,以获得上传/子目录文件夹,每个上传集都有唯一的id;所以这些文件也会得到一个唯一的id

$dir=substr(uniqid(),-7); // Uniqid for subdirectory
$path = "uploads/$dir/"; // uploads/subdirectory/
mkdir($path, 0700); // Make directory
$valid_formats = array("jpg", "png", "jpeg", "kml");
$max_file_size = 2097152;
$count = 0;
    // Loop $_FILES to exeicute all files
    foreach ($_FILES['files']['name'] as $f => $name) {
        if ($_FILES['files']['error'][$f] == 4) {
            continue; // Skip file if any error found
        }          
        if ($_FILES['files']['error'][$f] == 0) {              
            if ($_FILES['files']['size'][$f] > $max_file_size) {
                $message[] = "$name is too large!.";
                continue; // Skip large files
            }
            elseif( ! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats) ){
                $message[] = "$name is not a valid format";
                continue; // Skip invalid file formats
            }
            else{ // No error found! Move uploaded files 
                $ext = pathinfo($_FILES['files']['name'][$f], PATHINFO_EXTENSION);
                $uniq_name = substr(uniqid(),-5) . '.' .$ext;
                $dest = $path . $uniq_name;
                move_uploaded_file($_FILES["files"]["tmp_name"][$f], $dest);
                mysqli_query($dbc, "INSERT INTO files (code, name, path, type) VALUES ('$dir','$uniq_name','$dest','$ext')" );
                $count++; //Number of successfully uploaded file

            }
        }

    }

}
此过程正确执行

我想在移动上传文件后,获得上传文件的所有路径。 但我在数据库中只插入了第一个选定文件的路径。。。其他路径文件已正确上载,但未插入数据库

对不起,我的英语不好,它不是我的第一语言。我希望你能帮助我

试试看

$sql_error = ''; // add this before you start the loop


if(move_uploaded_file($_FILES["files"]["tmp_name"][$f], $dest)){
  $qry = "INSERT INTO files (code, name, path, type) VALUES ('$dir','$uniq_name','$dest','$ext')" ;

  $result = mysqli_query($dbc, $qry);
  if ( false===$result ) {
    $sql_error .= 'Error in the query '.$qry.'  Error Desc :'.mysqli_error($dbc).'<br /><br />' ;
  }
}
因此,如果有任何错误,它将在查询中显示错误

还可以通过将查询添加到

if(move_uploaded_file($_FILES["files"]["tmp_name"][$f], $dest)){}
表示仅在上载文件时添加

if(move_uploaded_file($_FILES["files"]["tmp_name"][$f], $dest)){}