您好我准备创建一个Web应用程序,以便用户上传多个文件。
这是我的HTML代码。
<input type="file" name="filesname[]" multiple/>
但我想在页面中显示文件名,并将文件名上传到数据库。 例如用户将上传“A.jpg”,“B.png”和“C.txt”;
我使用这个PHP代码是有效的。它正在努力展示多个文件。foreach($_FILES['filesname']['tmp_name'] as $key => $tmp_name ){
$file_name = $key.$_FILES['filesname']['name'][$key];
echo "$file_name".",";}
上传成功后,html页面显示
result A.jpg,B.png,C.txt,
但我想在数据库中上传文件名。
显示我使用了此代码
$sql="INSERT into file_name_table (filename) VALUES('$file_name'.','); ";
但它只是更新数据库中的第一个file_name。
A.jpg,
任何想法?感谢
答案 0 :(得分:1)
在for each循环中包含您的查询
EX。
foreach($_FILES['filesname']['tmp_name'] as $key => $tmp_name ){
$file_name = $key.$_FILES['filesname']['name'][$key];
$sql="INSERT into file_name_table (filename) VALUES('$file_name'.',');";$sql->execute();}
答案 1 :(得分:0)
我想你想要(注意。=而不是=)然后在循环外回声
foreach($_FILES['filesname']['tmp_name'] as $key => $tmp_name )
{
$file_name .= $_FILES['filesname']['name'][$key] . ",";
}
echo "$file_name"
答案 2 :(得分:0)
一种解决方案是将文件名存储在数组中,然后将其转换为带有implode的字符串。这就像
<?php
$_user = 'root';
$_password= 'root';
$_db = 'localtest';
$_host = 'localhost';
$_port = 3306;
$con = new mysqli($_host, $_user, $_password, $_db);
if(isset($_POST['btnSubmit']))
{
$file_name = array();
foreach($_FILES['filesname']['tmp_name'] as $key => $tmp_name ){
array_push($file_name, $key.$_FILES['filesname']['name'][$key]);
}
$files_name = implode(', ', $file_name);
echo $files_name;
$sql="INSERT into file_name_table (filename) VALUES('$files_name'); ";
mysqli_query($con,$sql);
mysqli_close($con);
}
?>
测试上面的代码,它将输出。数据库将使用相同的字符串进行更新。
0001.pdf, 1201.pdf, 2747_8.pdf
注意:建议不要使用上述查询,因为它们容易受到sql注入攻击。建议使用带有占位符的准备语句,而不是像bellow
<?php
$_user = 'root';
$_password= 'root';
$_db = 'localtest';
$_host = 'localhost';
$_port = 3306;
$con = new mysqli($_host, $_user, $_password, $_db);
if(isset($_POST['btnSubmit']))
{
$file_name = array();
foreach($_FILES['filesname']['tmp_name'] as $key => $tmp_name ){
array_push($file_name, $key.$_FILES['filesname']['name'][$key]);
}
$files_name = implode(', ', $file_name);
echo $files_name;
$sql="INSERT into file_name_table (filename) VALUES(?); ";
$stmt = $con-> prepare($sql);
$stmt -> bind_param("s", $files_name);
$stmt -> execute();
mysqli_close($con);
}
?>