3

イメージ名をテーブルに格納し、ファイルをサーバー上のフォルダーに格納するテーブルがあります。私がしたいのは、データベースからレコードを削除すると同時に、サーバー上のフォルダーから、テーブルレコードに名前を持つ対応する画像を削除できるようにすることです。以下はコードです。

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

5 に答える 5

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));
}
于 2012-09-18T14:52:14.247 に答える
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));
}
于 2012-10-09T16:09:06.320 に答える
1

unlinkを使用して、php でファイルを削除できます。ファイルの場所を渡すと、ファイルが配置されているディレクトリでphpが正しい権限を持っている場合にファイルが削除されます(権限についてはchmodを参照してください)。

したがって、データベースからファイルを削除した後 (レコードが削除されたことを確認するためにチェックを行ってください)、ファイルの場所で unlink を呼び出します。

于 2012-09-18T14:51:04.913 に答える
0

unlink($pathtofile) php 関数を使用できます

于 2012-09-18T14:51:52.113 に答える
-1

リンク解除を使用できます...たとえば

unlink('pathtofile');
于 2012-09-18T14:52:54.390 に答える