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