Php 在单个数据库插入查询中一次上载4个文件

Php 在单个数据库插入查询中一次上载4个文件,php,mysql,database,file,Php,Mysql,Database,File,我想一次上传4个文件,在一个单一的数据库中插入查询,如何做到这一点?下面是我的代码 $name_array = $_FILES['files']['name']; $tmp_name_array = $_FILES['files']['tmp_name']; $type_array = $_FILES['files']['type']; $size_array = $_FILES['files']['size']; for ($i=0; $i<count($tmp

我想一次上传4个文件,在一个单一的数据库中插入查询,如何做到这一点?下面是我的代码

$name_array     = $_FILES['files']['name'];
$tmp_name_array = $_FILES['files']['tmp_name'];
$type_array     = $_FILES['files']['type'];
$size_array     = $_FILES['files']['size'];

for ($i=0; $i<count($tmp_name_array); $i++  ){

    if(move_uploaded_file($tmp_name_array[$i],"uploads/".$name_array[$i])){
        $query  = "INSERT INTO photos (`file_name`, `file_name1`,`file_name2`,`file_name3` `file_type`,`size`,`caption`)  VALUES('$name_array[$i]',$name_array[$i]',$name_array[$i]',$name_array[$i]','$ty   pe_array[$i]','$size_array[$i]','$caption[$i]') ";
        mysql_query($query);
        var_dump($query);
        echo "The file $name_array[$i] has been upload ";
    } else {
        echo "The file $name_array[$i] has not been upload ";
    }

} 
$name\u数组=$\u文件['FILES']['name'];
$tmp_name_array=$_FILES['FILES']['tmp_name'];
$type_数组=$\u文件['FILES']['type'];
$size\u数组=$\u文件['FILES']['size'];

对于($i=0;$i首先,不要使用不推荐使用的mysql\u函数。将它们更改为mysqli\uPDO

现在,要使用单个查询向数据库插入多个条目,可以使用以下语法:

INSER INTO table_name (columnName1, columnName2, ...) VALUES
(val1_1, val1_2, ...),
(val2_1, val2_2, ...),
...
因此,使用您的代码,您可以:

$query = "INSERT INTO photos (`file_name`, `file_name1`,`file_name2`,`file_name3` `file_type`,`size`,`caption`)  VALUES ";
$inserts = [];

for ($i = 0; $i < count($tmp_name_array); $i++) {

  if (move_uploaded_file($tmp_name_array[$i], "uploads/".$name_array[$i])) {
    $inserts[] = "('{$name_array[$i]}', '{$name_array[$i]}', '{$name_array[$i]}', '{$name_array[$i]}', '{$type_array[$i]}', '{$size_array[$i]}', '{$caption[$i]}')";
  }
}

if (!empty($inserts)) {
    mysql_query($query.implode(", ", $inserts));
} else {
    echo "No files to be uploaded and saved";
}
$query=“在照片中插入(`file\u name`、`file\u name1`、`file\u name2`、`file\u name3`` file\u type`、`size`、`caption`)值”;
$inserts=[];
对于($i=0;$i

但是,仍然要将此更改为prepared语句(它将消除参数之前缺少的

从上面的代码中,我认为您正在尝试这样做。下面是一段用于上载多个文件的代码

$file_arr= array();

    for($i=0,$j=0; $i<count($_FILES['userfile']['name']); $i++)
    {
       if(isset($_FILES['userfile']['name'][$i]) && $_FILES['userfile']['name'][$i] != "")
    {
        $file_arr[$j] = array();
        $file_arr[$j]['name']       = $_FILES['userfile']['name'][$i];
        $file_arr[$j]['size']   = $_FILES['userfile']['size'][$i];
        $file_arr[$j]['type']       = $_FILES['userfile']['type'][$i];
        $file_arr[$j]['tmp_name']   = $_FILES['userfile']['tmp_name'][$i];
        $j++;
    }
}
if(count($file_arr) > 0){
    $file_location = 'uploads/files/';

    for($i=0; $i<count($file_arr); $i++)
    {   

        if(move_uploaded_file($file_arr[$i]['tmp_name'],$file_location.$file_arr[$i]['name'])){
            $msg = "uploaded successfully";

            $query="INSERT INTO photos (`file_name`, `file_type`,`size`,`caption`)  VALUES('$file_arr['name']','$file_arr['type']','$file_arr['size']','$caption') ";


            $q2 =mysql_query($sql2) or die(mysql_error());

            }
        }
    }
$file_arr=array();
对于($i=0,$j=0;$i=0){
$file_location='uploads/files/';

对于($i=0$i@CyedSafir检查PHP版本。较旧的PHP版本不支持速记数组
[]
,请将其替换为
数组()
$inserts=[];
)我的PHP版本是5.3。5@CyedSafir因此,请使用非速记语法。