0

誰かが私のコードを手伝ってくれる?データベースでは画像を削除できますが、ディレクトリでは削除できません。私は長時間試しましたが、まったく機能しないようです。誰か助けてくれませんか?これが私のコードです:これは画像が置かれているコードです

<?
//this is were images displayed
                    $query = "SELECT * FROM images WHERE category='home'";
                    $result = mysql_query($query) or die(mysql_error());
                    while($row = mysql_fetch_array($result)){
                    ?>
                    <a href="edithomephotos.php?delete=<?=$row['imageID']?>" onclick = "return confirm('Are you sure you want to delete?')"><img src="images/template/delete.png" id="AEDbutton"></a>


                    echo "<img border=\"0\" src=\"".$row['image']."\" width=\"200\"  height=\"100\">";
                    echo "<br>";                }   


?>

、?

include('global.php');

//this is were image were deleted

if($delete != "") 



    {

        $query = "DELETE FROM images WHERE imageID='".$delete."'";
        ExecuteQuery($query);   

}

//but in here , it cannot delete image through directory
           $query = "SELECT * FROM images WHERE imageID='".$delete."'";

                $result = mysql_query($query);

while ($delete = mysql_fetch_array($result)) {
                $image = $delete['image'];

                 $file= '/.directory/'.$image;

                        unlink($file);


    }



?>
4

3 に答える 3

2

テーブル内の画像エントリをすでに削除しました。その後、DBで同じエントリを取得しようとします。したがって、最初にフォルダから画像を削除してから、テーブルで削除することができます。

<?php
    include('global.php');

    if($delete != "") {
        $query = "SELECT * FROM images WHERE imageID='".$delete."'";
        $result = mysql_query($query);

        while ($delete = mysql_fetch_array($result)) {
            $image = $delete['image'];
            $file= '/.directory/'.$image;
            unlink($file);
        }

        $query = "DELETE FROM images WHERE imageID='".$delete."'";
        ExecuteQuery($query);   
    }
?>

注: パス$file= '/.directory/'.$image;が正しいことを確認してください。ルートディレクトリから参照していると思います。

于 2013-01-23T14:17:08.463 に答える
1

面白い。これは、最初にデータベースからイメージIDを削除し、その後、以前に削除されたイメージ(現在は存在しない)のIDを取得して、それに関連付けられているファイルを削除しようとしているためです。このようにコードを切り替えます。

include('global.php');

if($delete != "") 
{
//first delete the file
$query = "SELECT * FROM images WHERE imageID='".$delete."'";

$result = mysql_query($query);

while ($delete = mysql_fetch_array($result))
{
    try
    {
        $image = $delete['image'];
        $file= '/images/'.$image;
        unlink($file);
    } catch (Exception $e) {

    }
}

// after that delete the id from the db of that image associated with the deleted file
$query = "DELETE FROM images WHERE imageID='".$delete."'";
ExecuteQuery($query);   
}

更新:トライキャッチを追加しました

于 2013-01-23T14:19:38.333 に答える