0

在我的 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 的图像没有区别。

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

提前致谢。

4

3 回答 3

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}.*
于 2011-09-02T12:45:18.357 回答
0

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

while ($current_imagename_result = mysql_fetch_array($imagename_query))

代替

$imagename_result = mysql_fetch_array($imagename_query);

之后你将不得不使用$current_imagename_result 而不是 yor varable

于 2011-09-02T12:47:34.737 回答
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);
}

希望这对其他人有帮助。

于 2011-09-03T14:15:54.960 回答