2016-03-22 8 views
0

Ich versuche, eine Schleife zu machen, die überprüft, ob ein Bild mit dem Dateinamen aus der Datenbank vorhanden ist, wenn nicht alle Bilder zu trennen, da ich viele Duplikate im Ordner aber Ordner 50 GB. Ich kann nicht jeden überprüfen.Schleife zum Überprüfen und Entfernen von Bild, wenn nicht vorhanden

Also hier ist, was ich

$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); 
    } 
} 

aktualisieren

$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

Funktioniert der Code nicht wie erwartet? – summea

+0

@summea Ich denke es ist nicht richtig, ich bin Neuling! – 1mnumb1

+0

Welchen Fehler bekommen Sie? Wenn dies eine öffentlich zugängliche Seite ist, sollten Sie vorbereitete Anweisungen verwenden. Wenn Sie keine vorbereiteten Aussagen verwenden, ist dies ein sehr ernstes Sicherheitsrisiko. – kojow7

Antwort

1

Das ist die Logik versucht habe ich verstanden habe. Überprüfen Sie, ob sich Dateien im Ordner befinden, die nicht in der Datenbank vorhanden sind, und löschen Sie sie gegebenenfalls.

$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

Gut! Obwohl OP eher mysqli als PDO benutzt. – kojow7

+0

Ja, ich habe einen Fehler mit PDO!Wie schreibt man dieses korrekt in mysqli um: $ query = $ mysqli-> query ($ sql); $ row = $ query-> fetchAll(); – 1mnumb1

+0

Versuchen Sie es jetzt, ich habe es mit mysqli gemacht –

Verwandte Themen