0

我在表单中有多个图像上传选项,它们工作正常并更新 mysql 数据库列中的文件名?

当我上传 image1 然后图像移动到服务器上,它也显示在旁边,html table columns问题是当我image with file option2在表单提交后上传时,然后image1 which is on the next to the image1 file option会消失并在mysql database image1 columns will be blank

多张图片上传功能

 $id=$_REQUEST['id'];

 if(isset($_POST['submit']))
 {

 if (!empty($_FILES['image']['name'])) 
 {

 $rnd_1 = rand(11111,99999); 
 $file_name= $rnd_1.'_'.$_FILES['image']["name"];
 $file_path = "uploads/"; 
 $image = new imgMark(); 
 $image->font_path = "arial.ttf"; 
 $image->font_size = 25; 
 $image->water_mark_text = "© www.edge.pk";  
 $image->color = 'CC003E'; 
 $image->opacity = 50; 
 $image->rotation = 0;
 if($image->convertImage('image', $file_name, $file_path))
 $demo_image = $image->img_path;
 }

 if (!empty($_FILES['image1']['name'])) 
 { 
 $rnd_1 = rand(11111,99999); 
 $file_name= $rnd_1.'_'.$_FILES['image1']["name"];
 $file_path = "uploads/"; 
 $image = new imgMark(); 
 $image->font_path = "arial.ttf"; 
 $image->font_size = 35; 
 $image->water_mark_text = "© www.edge.pk";  
 $image->color = 'CC003E'; 
 $image->opacity = 50; 
 $image->rotation = 0;
 if($image->convertImage('image1', $file_name, $file_path))
 $demo_image2 = $image->img_path;
 }

 if (!empty($_FILES['image2']['name'])) 
 { 
 $rnd_1 = rand(11111,99999); 
 $file_name= $rnd_1.'_'.$_FILES['image2']["name"];
 $file_path = "uploads/"; 
 $image = new imgMark(); 
 $image->font_path = "arial.ttf"; 
 $image->font_size = 35; 
 $image->water_mark_text = "© www.edge.pk";  
 $image->color = 'CC003E'; 
 $image->opacity = 50; 
 $image->rotation = 0;
 if($image->convertImage('image2', $file_name, $file_path))
 $demo_image3 = $image->img_path; 
 }

更新查询

UPDATE products SET 
image='$demo_image',addimage1='$demo_image2',addimage2='$demo_image3'
WHERE id='$id'
}

选图查询

$query1=mysql_query("select images,addimages1,addimages2 from products 
where id='$id' ")or die("query");
$row2=mysql_fetch_array($query1);

<form method="post" enctype="multipart/form-data"> 

Image Upload Option1
<input type="file" name="image" id="image" />
<img src="<?php echo $image['image'] ?>" width="150" height="150" />

Image Upload Option2
<input  type="file" name="image1" id="image1"/>
<img src="<?php echo $image['addimage1'] ?>" width="150" height="150" />

Image Upload Option3
<input  type="file" name="image2" id="image2"/>
<img src="<?php echo $image['addimage2'] ?>" width="150" height="150" />

<input type="submit" class="bg" name="submit" />
</form>
4

1 回答 1

0

问题出在这里:

UPDATE products SET 
image='$demo_image',addimage1='$demo_image2',addimage2='$demo_image3'
WHERE id='$id'
}

据我了解,您首先在上传第一张图片的地方提交表单,然后在上传第二张图片的地方再次提交表单。这样做的原因是,在您第二次上传期间,变量 $demo_image 将为空白,因为您在重新提交期间没有发送输入“图像”的任何值。看这里:

$demo_image = $image->img_path;

$image->img_path 为空白,因此 $demo_image 也将为空白(或 NULL?- 不确定)。

这个问题有很多解决方案。您可以从您的数据库中检索数据到表单,然后重新提交,或者测试您的变量是否为空白(或 NULL?),然后针对不同的变体使用不同的 UPDATE 命令,或者在运行 UPDATE 之前从 MySQL 检索数据等等。

我会选择从 MySQL 中检索“旧”数据,然后测试它们是否为 NULL。如果它们在 MySQL 中不为 NULL,您只需将相同的数据重新提交到您的数据库。像这样:

if ($demo_image_from_db!=NULL) $demo_image = $demo_image_from_db;

可能还有一个 MySQL 本机函数,仅在 NULL 时才更新——我听说过 COALESCE,但我不完全知道如何使用它——这绝对是最简单的方法。

于 2013-04-19T22:36:40.913 回答