将多个文件上载到PHP并在SQL数据库中存储文件路径等
我正在尝试使用PHP将多个文件上载到一个文件夹,然后将文件路径等添加到SQL数据库中 当我删除运行数据库查询的if语句时,所有选定的文件都会成功上载到指定的目录,并且“success”回显的打印次数与上载的文件的打印次数相同,如预期的那样 当我重新添加if语句时,这只会导致上传第一个文件,而不会回显其他文件。对于单个上载的文件,只打印一个“success”回显,并且状态:success或error:。。。已打印,但未向数据库中添加任何内容 代码如下:将多个文件上载到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)) {
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
子句中将内容与literalTRUE
进行比较的习惯。大部分时间if(x)
是足够的,而if(x==TRUE)
只是浪费了冗长的内容。