Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.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并在SQL数据库中存储文件路径等_Php_Mysql_File Upload_Multifile Uploader - Fatal编程技术网

将多个文件上载到PHP并在SQL数据库中存储文件路径等

将多个文件上载到PHP并在SQL数据库中存储文件路径等,php,mysql,file-upload,multifile-uploader,Php,Mysql,File Upload,Multifile Uploader,我正在尝试使用PHP将多个文件上载到一个文件夹,然后将文件路径等添加到SQL数据库中 当我删除运行数据库查询的if语句时,所有选定的文件都会成功上载到指定的目录,并且“success”回显的打印次数与上载的文件的打印次数相同,如预期的那样 当我重新添加if语句时,这只会导致上传第一个文件,而不会回显其他文件。对于单个上载的文件,只打印一个“success”回显,并且状态:success或error:。。。已打印,但未向数据库中添加任何内容 代码如下: if (isset($_POST)) {

我正在尝试使用PHP将多个文件上载到一个文件夹,然后将文件路径等添加到SQL数据库中

当我删除运行数据库查询的if语句时,所有选定的文件都会成功上载到指定的目录,并且“success”回显的打印次数与上载的文件的打印次数相同,如预期的那样

当我重新添加if语句时,这只会导致上传第一个文件,而不会回显其他文件。对于单个上载的文件,只打印一个“success”回显,并且状态:success或error:。。。已打印,但未向数据库中添加任何内容

代码如下:

if (isset($_POST)) {
    if (count($_FILES['upload']['name']) > 0) {
        for($i=0; $i<count($_FILES['upload']['name']); $i++) {

            $tmpFilePath = $_FILES['upload']['tmp_name'][$i];

            if ($tmpFilePath != "") {

                $shortname = $_FILES['upload']['name'][$i];
                $filePath = "../../uploads/files/" . $_FILES['upload']['name'][$i];

                if(move_uploaded_file($tmpFilePath, $filePath)) {
                    echo "success";

                    include './includes/db/databaseUploads.php';

                    $files[] = $shortname;
                    $dbuserId = $_SESSION['login_id'];

                    $queryAddFile = "INSERT INTO `files`(`id`, `file_name`, `folder`, `user_id`, `upload_time`, `modify_time`) VALUES (NULL,$shortname,'root',$dbuserId',NULL,NULL)";

                    //Removing the below if statement allows me to upload multiple files but obviously removes database functionality.
                    if ($connectionUploads->query($queryAddFile) === TRUE) {
                        echo '{"status":"success"}';
                    } else {
                        echo '{"status":"error", "response":"'.$connectionUploads->error.'"}';
                    }
                }
            }
        }
    }

} else {
    echo "no post"; 
}
if(isset($\u POST)){
如果(计数($_文件['upload']['name'])>0){
对于($i=0;$iquery($queryAddFile)==TRUE){
回显“{”状态“:“成功”}”;
}否则{
回显“{”状态“:“错误”,“响应“'.$connectionUploads->error.”“}”;
}
}
}
}
}
}否则{
回应“没有帖子”;
}

任何帮助都将不胜感激。

警告:这有一些严重问题,因为在查询中使用了
$\u GET
数据。尽可能使用事先准备好的陈述。在任何用户提供的数据都指定有
:name
指示符的情况下,这些操作非常简单,稍后将根据您使用的是哪个指示符,使用
绑定参数或
执行
填充指示符。切勿将
$\u POST
$\u GET
数据直接放在查询中。请尽量避免养成在
if
子句中将内容与literal
TRUE
进行比较的习惯。大部分时间
if(x)
是足够的,而
if(x==TRUE)
只是浪费了冗长的内容。