从数据库中删除记录时,我需要帮助从文件夹中删除图像

时间:2012-09-18 14:46:32

标签: php mysql sql

我有一个表,它将表中的图像名称和文件存储在服务器上的文件夹中。我想要做的是能够从数据库中删除记录,同时从服务器上的文件夹中删除表记录中具有其名称的相应图像。任何帮助将不胜感激以下是代码:

if ((isset($_POST['hiddenFieldID'])) && ($_POST['hiddenFieldID'] != "")) {
  $deleteSQL = sprintf("DELETE FROM photodiary WHERE pdiaryID=%s",
                       GetSQLValueString($_POST['hiddenFieldID'], "int"));

  mysql_select_db($database_connMain, $connMain);
  $Result1 = mysql_query($deleteSQL, $connMain) or die(mysql_error());

  $deleteGoTo = "adphotodiary.php?user=" . $row_rsadmin['adID'] . "";
  if (isset($_SERVER['QUERY_STRING'])) {
    $deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
    $deleteGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $deleteGoTo));
}

5 个答案:

答案 0 :(得分:2)

您将不得不执行SELECT查询以获取文件名并在服务器上检索其路径。然后你可以发送DELETE查询,如果成功,你将删除该文件。

if ((isset($_POST['hiddenFieldID'])) && ($_POST['hiddenFieldID'] != "")) {
  $getPathSql = sprintf("SELECT * FROM photodiary WHERE pdiaryID=%s",
                       GetSQLValueString($_POST['hiddenFieldID'], "int"));
  mysql_select_db($database_connMain, $connMain);
  $pathResult = mysql_query($getPathSql , $connMain) or die(mysql_error());
  $path = ...
  $deleteSQL = sprintf("DELETE FROM photodiary WHERE pdiaryID=%s",
                       GetSQLValueString($_POST['hiddenFieldID'], "int"));

  $Result1 = mysql_query($deleteSQL, $connMain) or die(mysql_error());
  if($Result1 && is_file($path)) unlink($path);

  $deleteGoTo = "adphotodiary.php?user=" . $row_rsadmin['adID'] . "";
  if (isset($_SERVER['QUERY_STRING'])) {
    $deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
    $deleteGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $deleteGoTo));
}

答案 1 :(得分:1)

您可以使用unlink删除带有php的文件。如果您传递文件的位置,它将为您删除它,前提是php在文件所在的目录中具有正确的权限(请参阅chmod获取权限)。

因此,在从数据库中删除文件后(检查以确保删除了记录),然后您将继续调用文件位置的取消链接。

答案 2 :(得分:1)

非常感谢所有帮助过的人。对不起我之前没有更新,但我解决了这个问题。当然,随着每个人的帮助和一些进一步的阅读。 我做的是首先定义目标,然后获取要从浏览器请求中删除的字段的id,运行查询以根据id从数据库中选择字段记录,然后使用php中的unlink函数取消链接最初定义的目标文件夹中的图像。 在此之后,然后继续从表中删除记录。

以下是代码。

$target = "../photodiary/";

if ((isset($_POST['hiddenFieldID'])) && ($_POST['hiddenFieldID'] != "")) {

    $imID = $_GET['pdid'];
            $query_pd  = "SELECT photo FROM photodiary WHERE pdiaryID = $imID";     
            $resulttt = mysql_query($query_pd) or die('Error, get image info failed. ' . mysql_error());
            $row = mysql_fetch_assoc($resulttt);

            if(($row['photo']) != "")
            {
                unlink($target . $row['photo']);
            }

  $deleteSQL = sprintf("DELETE FROM photodiary WHERE pdiaryID=%s",
                       GetSQLValueString($_POST['hiddenFieldID'], "int"));

  mysql_select_db($database_connMain, $connMain);
  $Result1 = mysql_query($deleteSQL, $connMain) or die(mysql_error());

  $deleteGoTo = "confirm_del.php?user=" . $row_rsadmin['aID'] . "";
  if (isset($_SERVER['QUERY_STRING'])) {
    $deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
    $deleteGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $deleteGoTo));
}

答案 3 :(得分:0)

你可以使用unlink($pathtofile) php函数

答案 4 :(得分:-1)

你可以使用unlink ...例如

unlink('pathtofile');