【发布时间】:2014-11-03 19:54:33
【问题描述】:
我在数据库中上传图片时遇到了这个问题。当我插入查询时,只需单击一下即可获得 3 行。这是 HTML 文件:
<form action="my_parser.php" method="post" enctype="multipart/form-data">
<input type="file" name="file_array[]">
<input type="file" name="file_array[]">
<input type="file" name="file_array[]">
<input type="submit" value="Upload all files">
</form>
这是我的 PHP 代码:
<?
include "../include/config.php";
?>
<?
if(isset($_FILES['file_array'])){
$id = $_REQUEST['id'];
$name_array = $_FILES['file_array']['name'];
$tmp_name_array = $_FILES['file_array']['tmp_name'];
$type_array = $_FILES['file_array']['type'];
$size_array = $_FILES['file_array']['size'];
$error_array = $_FILES['file_array']['error'];
$image1 = $name_array[0];
for($i = 0; $i < count($tmp_name_array); $i++){
if(move_uploaded_file($tmp_name_array[$i],
"test_uploads/".$name_array[$i])){
echo $name_array[$i]." upload is complete<br>";
$add = mysql_query("insert into nn values (' ','$image1','','')");
echo "<img src='test_uploads/$image1'>";
} else
{ echo "move_uploaded_file function failed for ".$name_array[$i]."<br>";
}
}
}
?>
在数据库中,表 nn 有此列。 id - image1 - image2 - image3。 谢谢你
【问题讨论】:
-
这看起来非常不安全,因为您的用户参数不是properly escaped。您应该绝不将
$_POST数据直接放入查询中。这会创建一个巨大的SQL injection bug。此外,mysql_query是一个过时的接口,不应使用,它已从 PHP 中删除。像PDO is not hard to learn 这样的现代替代品。 PHP The Right Way 之类的指南解释了最佳实践。