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

时间:2015-01-19 07:31:57

标签: 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_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 ";
    }

} 

2 个答案:

答案 0 :(得分:2)

首先,不要使用已弃用的 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";
}

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

答案 1 :(得分:2)

从上面的代码

我认为你正在尝试做这样的事情。这里有一小段代码可以上传多个文件。

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

            }
        }
    }