2016-03-22 39 views
0

我試圖做一個循環,檢查是否存在數據庫的文件名圖像存在,如果不是因爲我有許多重複的文件夾,但文件夾是50GB的所有圖像。我無法檢查每一個。循環檢查並刪除圖像,如果不存在

所以這裏就是我試過

$id = $_GET['id']; 
$sql = "SELECT thumbnail FROM files WHERE id='$id'"; 
$query = $mysqli->query($sql); 
$row = $query->fetch_assoc(); 
$thumb = $row['thumbnail']; 
$records = "../upload/images/"; 
foreach ($records as $record) { 
    if (file_exists('../upload/images/'.$thumb)) {} 
    else { 
     @unlink('../upload/images/'.$thumb); 
    } 
} 

更新

$sql = "SELECT thumbnail FROM filesWHERE id='$id'"; 
$query = $mysqli->query($sql); 
$row = $query->fetchAll(); 

foreach($sql as $search_result) { 
    if(file_exists($search_result['thumbnail'])) { 
     $img_source = ('../upload/images/'.$search_result['thumbnail']); 
    } else { 
     @unlink('../upload/images/'.$search_result); 
    } 
} 
+0

代碼無法按預期工作? – summea

+0

@summea我認爲這是不正確的,我是新手! – 1mnumb1

+0

你得到什麼錯誤?另外,如果這是一個可公開訪問的頁面,您應該使用準備好的語句。如果您不使用準備好的語句,那麼這是一個非常嚴重的安全風險。 – kojow7

回答

1

這是我所理解的邏輯。檢查文件夾中是否存在數據庫中不存在的文件,如果存在,請將其刪除。

$directory = "../upload/images/"; 
$images = glob($directory . "*.jpg"); 

foreach($images as $image) 
{ 
    $sql = "SELECT thumbnail FROM files WHERE thumbnail =?"; 
    $stmt = $mysqli->prepare($sql); 
    if($stmt) { 
    $stmt->bind_param('s', $image); 
    $stmt->bind_result($result); 
    $stmt->execute(); 

    $stmt->fetch(); 

    if(!$result) { 
     if(unlink($image)) { 
      echo "Image deleted $image <br>\n"; 
     } 
    } 
    } else { 
     echo "Unable to prepare SQL"; 
    } 

} 
+0

好!儘管OP使用mysqli而不是PDO。 – kojow7

+0

是的,我得到PDO錯誤!如何重寫mysqli這個正確的: $ query = $ mysqli-> query($ sql); $ row = $ query-> fetchAll(); – 1mnumb1

+0

現在嘗試,我已經用mysqli完成了 –

相關問題