如何删除php中的图像


How do i delete an image in php?

我正在尝试删除ajax php文件中的一个图像。我有以下代码:

<?php
define('IS_AJAX', true);   
$id = $db->real_escape_string($_GET['photo_id']);    
$files = $db->query("SELECT * FROM uploaded_photos WHERE id=".$id);        
$files = $files->fetch_object();
$file = $files->path;
if($file){    
unlink("../uploads/".$file);    
$db->query("DELETE FROM uploaded_photos WHERE id='".$id);
}

在这种情况下,路径是图像,例如1.jpg。它确实删除了表行,但没有删除上传文件夹中的图像。希望有人能帮我。事先谢谢你的努力。

您可能需要重新检查您的代码。您有一个未闭合的单引号。请参阅下面的代码。。。

        define('IS_AJAX', true);
        $id     = $db->real_escape_string($_GET['photo_id']);
        $files  = $db->query("SELECT * FROM uploaded_photos WHERE id=".$id);
        $files  = $files->fetch_object();
        $file   = $files->path;
        // NOTE THAT if($file) WOULD ALMOST ALWAYS RETURN TRUE SO LONG AS IT CONTAINS ANY STRING
        // HOWEVER file_exists WILL CHECK IF THE FILE PHYSICALLY EXIST ON THE PATH/LOCATION OR NOT.
        // PREFER file_exists IN THIS SCENARIO INSTEAD.
        if(file_exists("../uploads/" . $file)){
            // CHANGE THE FILE PERMISSION ON THE IMAGE SO THAT YOU CAN WORK WITH IT...
            chmod("../uploads/" . $file, 0755);   // <== GIVES YOU PERMISSION TO DEAL WITH THE FILE...
            unlink("../uploads/".$file);
            // BY THE WAY;  HERE IS A PROBLEM... YOU HAVE AN UNCLOSED SINGLE QUOTE AFTER THE EQUAL SIGN.
            // I REALLY WONDER HOW THE TABLE ROW DELETES WITH THE TYPO...
            // TRY REMOVING OR COMPLETING IT THOUGH:        
            //$db->query("DELETE FROM uploaded_photos WHERE id='".$id);   <=== SEE THAT SINGLE QUOTE AFTER "=" THERE? THAT'S YOUR ENEMY.
            $db->query("DELETE FROM uploaded_photos WHERE id=".$id);
        }

更新:无评论

    <?php
        define('IS_AJAX', true);
        $id     = $db->real_escape_string($_GET['photo_id']);
        $files  = $db->query("SELECT * FROM uploaded_photos WHERE id='{$id}'" );
        $files  = $files->fetch_object();       
        $file   = $files->path;
        if(file_exists("../uploads/" . $file)){
            chmod("../uploads/" . $file, 0777); 
            unlink("../uploads/".$file);    
            $db->query("DELETE FROM uploaded_photos WHERE id='{$id}'");
        }