我正在尝试使用php上传两张图片。并将它们添加到数据库中。不知何故,它只上传一个图像,数据库中的记录总是具有相同的值。
这是我使用的代码
<?php
include "../connect.php";
$name1 = $_FILES['pic1']['name'];
$size1 = $_FILES['pic1']['size'];
$name2 = $_FILES['pic2']['name'];
$size3 = $_FILES['pic2']['size'];
if(isset($_POST['name']))
{
$extension1 = pathinfo($name1,PATHINFO_EXTENSION);
$array = array('png','gif','jpeg','jpg');
if (!in_array($extension1,$array)){
echo "<div class='faild'>".$array[0]."-".$array[1]."-".$array[2]."-".$array[3]." --> (".$name.")</div>";
}else if ($size>10000000){
echo "<div class='faild'>Size</div>";
}else {
$new_image1 = time().'.'.$extension1;
$file1 = "images/upload";
$pic1 = "$file1/".$new_image1;
move_uploaded_file($_FILES["pic1"]["tmp_name"],"../".$pic1."");
$insert = mysql_query("update temp set pic='$pic1' ") or die("error ins");
}
$extension2 = pathinfo($name2,PATHINFO_EXTENSION);
$array = array('png','gif','jpeg','jpg');
if (!in_array($extension2,$array)){
echo "<div class='faild'>".$array[0]."-".$array[1]."-".$array[2]."-".$array[3]." --> (".$name.")</div>";
}else if ($size>10000000){
echo "<div class='faild'>Size</div>";
}else {
$new_image2 = time().'.'.$extension2;
$file2 = "images/upload";
$pic2 = "$file2/".$new_image2;
move_uploaded_file($_FILES["pic2"]["tmp_name"],"../".$pic2."");
$insert = mysql_query("update temp set passport='$pic2'") or die("error ins");
}
}
?>
答案 0 :(得分:1)
您遇到的一个问题是您的更新声明。没有&#39; where&#39;语句说明应该更新数据库中的哪条记录,以便此查询更新所有记录。这就是为什么你只有所有数据库行中的最后一个图像。
除此之外,从安全角度来看,您的代码并不是很好。您应该查看mysqli或pdo以获取数据库连接和查询,因为MySQL已弃用并已从PHP中删除。另请参阅SQL注入和数据验证。除了一些非常基本的扩展和大小验证之外,没有任何东西可以保存。尝试转义并验证所有用户输入。
另一点是看看&#39;功能&#39;。您至少运行两次完全相同的代码。每次代码更改都必须完成两次。非常适合函数调用,例如
function storeImage($image){
// write the uploading and storing PHP here
}