2017-09-09 149 views
-1

我不知道我在做什麼錯。我想在條件存在後刪除特定文件夾中的圖像。條件是限制超過八張圖片或照片。 它在我刪除一個圖像時起作用,但只要我添加了一個圖像,或者如果條件爲,就會導致拒絕訪問錯誤。php unlink權限被拒絕,或者

下面是我的代碼來檢查病情的數據庫,然後據說將刪除的文件夾的圖像:

mysql_select_db($database_rentaguide, $rentaguide); 
$query_overflow_images = sprintf("SELECT * FROM tbl_rentalimages WHERE sessionid = %s AND image_id > '$lastimageid'", 
    GetSQLValueString($colname_overflow_images, "text")); 
$overflow_images = mysql_query($query_overflow_images, $rentaguide) or die(mysql_error()); 
$row_overflow_images = mysql_fetch_assoc($overflow_images); 
$totalRows_overflow_images = mysql_num_rows($overflow_images); 

while ($row_overflow_images = mysql_fetch_assoc($overflow_images)); { 
    $overflowpath = $row_overflow_images['image_url']; 
    chmod("../".$overflowpath, 0777); 
    unlink("../".$overflowpath); 
} 

圖像的實際路徑是 - >rentalimages/LqXtyVtzKm/architecture-1836070__340.jpg

的$ lastimageid變量來自數據庫連接,它獲得第八或最後一個記錄的id,以及是否有八個以上的圖像。

請幫幫我。請在Windows 7

哦,是的,我運行XAMPP 64位

+1

爲什麼要調用'chmod()'?要麼你對文件有寫權限,要麼你沒有,chmod命令不能以某種方式幫助你獲得這樣的權限。當然,設置圖像文件可執行文件根本沒有意義。 – arkascha

+0

請將while循環內的'$ overflowpath'列表轉儲到某個日誌文件中,並檢查結果。也許在數據庫裏面有一些意想不到的價值? – arkascha

+1

一般說明:您正在使用過時的長期棄用的'mysql _...()'函數。出於安全原因,該擴展甚至完全被php-7刪除。您應該立即將您的代碼移植到更安全的'mysqli'擴展名中。 – arkascha

回答

0

你在你的代碼中的錯字,在while塊體前右(編輯 - 忘了提錯字是分號):

/* Empty loop, followed by a code block */ 
while ($row_overflow_images = mysql_fetch_assoc($overflow_images)); 
{ 
    /* $row_overflow_images is no longer an array */ 
    $overflowpath = $row_overflow_images['image_url']; 
    chmod("../".$overflowpath, 0777); 
    /* This line tries to delete the parent folder */ 
    unlink("../".$overflowpath); 
} 
0

這是到底是什麼工作....

mysql_select_db($database_rentaguide, $rentaguide); 
$query_overflow_images = sprintf("SELECT * FROM tbl_rentalimages WHERE 
sessionid = %s AND image_id > '$lastimageid'", 
GetSQLValueString($colname_overflow_images, "text")); 
$overflow_images = mysql_query($query_overflow_images, $rentaguide) or 
die(mysql_error()); 
$row_overflow_images = mysql_fetch_assoc($overflow_images); 
$totalRows_overflow_images = mysql_num_rows($overflow_images); 
do { 
    $filepath = $row_overflow_images['image_url']; 
    $imageid = $row_overflow_images['image_id']; 

    $deleteSQL = sprintf("DELETE FROM tbl_rentalimages WHERE image_id = %s", 
         GetSQLValueString($imageid, "int")); 

    mysql_select_db($database_rentaguide, $rentaguide); 
    $Result1 = mysql_query($deleteSQL, $rentaguide) or die(mysql_error()); 
    unlink("../".$filepath); 

} 
while ($row_overflow_images = mysql_fetch_assoc($overflow_images)); 

} 

PS我知道我應該移植到mysqli擴展,但我只是在練習,並試圖學習更多。謝謝stachoverflow。你們真棒!