2017-05-27 32 views
0

Delete files which are not in a mySQL TABLEClarifcation - 刪除不要在一個MySQL表

上面的鏈接是一個堆棧溢出問題的一個答案是(我相信)非常接近我正在尋找的文件。實際上我只是在給出的答案上尋求進一步的澄清。


問題

我想要的文件夾中刪除文件(圖片文件),只有當他們是 在一個特定的數據庫表中不存在。

就像檢查文件名一樣,如果它們出現在表中 沒關係,但如果不刪除它們。

任何想法如何做到這一點?

接受的答案

$result = mysql_query("SELECT filename FROM no_delete"); 
while($row = mysql_fetch_assoc($result)) {  
    $do_not_delete[] = $row['filename']; } 

foreach(glob("*") as $filename) { 
    if (!in_array($filename, $do_not_delete)) { 
     //delete them 
    } 
} 

我不是用PHP太精明,但我不相信他們是在服務器上指定一個文件夾路徑在這裏,是嗎?我希望能夠查看特定文件夾內部並檢查該文件夾中的任何圖像是否在任何數據庫表格內。如果沒有,請刪除該圖像。

回答

2

在調用glob(「*」)之前,只需添加一行chdir(「」)。然後你可以搜索你想看的目錄。我剛剛在下面的電話中高一級。你可以指定你想要的目錄。在執行刪除操作之前,只需在$ filename中添加echo語句來驗證是否刪除了正確的文件。

chdir("../"); 
foreach(glob("*") as $filename) { 
if (!in_array($filename, $do_not_delete)) { 
    //delete them 
} 
1

this answer第一參數所描述的,即pattern,可以包含的路徑相對於所述腳本的當前工作目錄(其可以與chdir()改變)或絕對路徑的目錄。

考慮從this tutorial page這個例子:

$dir = "/etc/php5/*"; 

// Open a known directory, and proceed to read its contents 
foreach(glob($dir) as $file) 
{ 
    echo "filename: $file : filetype: " . filetype($file) . "<br />"; 
}