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


uploading 4 files at a time in a single database insert query

我想在单个插入数据库查询中一次上传 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 ";
    }
} 

首先,不要使用已弃用的mysql_函数。将它们更改为 mysqli_PDO

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

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";
}

但是,仍然将其更改为预准备语句(它将消除参数之前缺少的')。

从上面的代码中,我认为您正在尝试做这样的事情。 这是上传多个文件的一小段代码。

$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());
            }
        }
    }