Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当记录从数据库中删除时,我需要帮助从文件夹中删除图像_Php_Mysql_Sql - Fatal编程技术网

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

Php 当记录从数据库中删除时,我需要帮助从文件夹中删除图像,php,mysql,sql,Php,Mysql,Sql,我有一个表,在表中存储图像名称,在服务器上的文件夹中存储文件。我想做的是能够从数据库中删除记录,同时从服务器上的文件夹中删除表记录中名称对应的图像。如需任何帮助,请参阅以下代码: if ((isset($_POST['hiddenFieldID'])) && ($_POST['hiddenFieldID'] != "")) { $deleteSQL = sprintf("DELETE FROM photodiary WHERE pdiaryID=%s",

我有一个表,在表中存储图像名称,在服务器上的文件夹中存储文件。我想做的是能够从数据库中删除记录,同时从服务器上的文件夹中删除表记录中名称对应的图像。如需任何帮助,请参阅以下代码:

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));
}
您可以使用php删除文件。如果您将文件的位置传递给它,它将为您删除该文件,前提是php在该文件所在的目录中具有正确的权限(有关权限,请参阅)


因此,从数据库中删除文件后(进行检查以确保记录已被删除),您将继续调用文件位置的unlink。

您可以使用php函数

您必须执行选择查询以获取文件名并检索其在服务器上的路径。然后您可以发送删除查询,如果成功,您将删除该文件

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));
}

你可以使用取消链接。。。比如说

unlink('pathtofile');

非常感谢所有帮助过我的人。很抱歉,我之前没有更新此内容,但我已解决了问题。当然,在大家的帮助和进一步的阅读下。 我所做的是首先定义目标,然后从浏览器请求中获取要删除的字段的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));
}

我真的希望数据库中的路径数据不是来自用户输入@Armel:已尝试删除文件夹中的图像,但未删除。文件夹路径为:-$path=“../photodiary/”;