使用PHP删除带有相关图片的产品

时间:2011-09-02 12:40:13

标签: php unlink

在我的PHP应用程序中,我的产品有3种尺寸的图像 - 大图,缩略图和小缩略图。每个图像都存储在一个单独的文件夹中:

图片 - / gallery 缩略图 - / gallery / bigthumbs 小缩略图 - / gallery / thumbs

每种产品都有其唯一的ID。某个产品的所有图像的文件名是相同的。产品映像的路径存储在数据库中,其ID与关联的产品ID相同。

每个产品可以有多个图像,但在数据库中,我存储路径和每个产品的图像名称,所有图像都存储有相同的ID,与产品ID相同。

因此,如果ID为56的产品在数据库中有2个图像,那么这些图像将按如下方式存储:

ID-> 56,image1name,bigthumb1name,thumb1name ID-> 56,image2name,bigthumb2name,thumb2name

我要做的是 - 删除与正在删除的产品相关联的所有图像。我写的代码如下:

$imagename_query = mysql_query("SELECT image FROM gallery WHERE id='$productid'", $connect);

$imagename_result = mysql_fetch_array($imagename_query);


    foreach($imagename_result as $imagename) {

    $bigimage = "../gallery/$imagename";
    unlink($bigimage);

    $picture = "../gallery/bigthumbs/$imagename";
    unlink($picture);

    $thumb = "../gallery/thumbs/$imagename";
    unlink($thumb);

 }

$gallery_query = mysql_query("DELETE FROM gallery WHERE id='$productid'", $connect); 


$query = mysql_query("DELETE FROM products WHERE ID='$productid'", $connect);

问题是上面的代码只删除了1张图片 - 没有差异的图片有相同的ID。

有人可以帮我解决这个问题吗?

提前致谢。

3 个答案:

答案 0 :(得分:3)

这一行是问题

$imagename_result = mysql_fetch_array($imagename_query);

应该是

while ($row = mysql_fetch_array($imagename_query))
{
  $bigimage = "../gallery/{$row['image']}";
  unlink($bigimage);
  // etc
}

我不确定你的情况是否真实 - 你有多个同名产品吗?

你的方法可能有点冒险...... 您可以通过嵌入产品ID

使文件夹路径唯一

,例如

/gallery/{$product_id}/{$product_name}.*

答案 1 :(得分:0)

因为你有更多的图像应该使用:

while ($current_imagename_result = mysql_fetch_array($imagename_query))

而不是

$imagename_result = mysql_fetch_array($imagename_query);

之后您必须使用$current_imagename_resul t而不是变量

答案 2 :(得分:0)

感谢大家的帮助。我已经设法通过以下方式解决了这个问题:

$imagename_query = mysql_query("SELECT image FROM gallery WHERE id='$productid'", $connect);

    $rows_count = mysql_num_rows($imagename_query);

for($i=0; $i<$rows_count; $i++){

    $id = mysql_result($imagename_query, $i, 'image');

    $bigimage = "../gallery/$id";
    unlink($bigimage);

    $picture = "../gallery/bigthumbs/$id";
    unlink($picture);

    $thumb = "../gallery/thumbs/$id";
    unlink($thumb);
}

希望这会有所帮助。