E-Mail Adressen aus txt Datei lesen und anschl. aus DB löschen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • E-Mail Adressen aus txt Datei lesen und anschl. aus DB löschen

    Hallo,

    ich schreibe gerade ein Skript, dass mir E-Mail Adressen aus einer Textdatei ausliest (pro Zeile eine Adresse), anschließend in der Datenbank guckt ob sie vorhanden ist, und den Eintrag löscht falls ja.

    Momentan sieht das Skript so aus:

    PHP-Code:
    // Datei öffnen und Text einlesen
    $fd fopen("email.txt""r");
    $email "";
    while (!
    feof($fd)) {
        
    $email .= fread($fd1024);
    }

    fclose($fd);

    //In Zeilen aufteilen
    $lines explode("\n"$email);

    for (
    $i=0$i count($lines); $i++) {

    // Verbindung zur DB
    mysql_connect("localhost""name""pw") or die ("Datenbankserver nicht gefunden");
    mysql_select_db("datenbank") or die ("Verbindung zur Datenbank fehlgeschlagen");

    $sql "DELETE FROM `tabelle` WHERE `Email` LIKE '%".$lines[i]."%'";

    if (
    mysql_query($sql)) {
                echo 
    "$lines[$i] gelöscht\n";
      }
     } 
    Tja, nun hat mein hübsches Skript allerdings alle Einträge in der Tabelle gelöscht, und das soll eigentlich nicht sein .

    Kann mir vielleicht jemand helfen den Fehler zu finden?
    Zuletzt geändert von Serra; 22.06.2006, 10:11.

  • #2
    Re: E-Mail Adressen aus txt Datei lesen und anschl. aus DB löschen

    Regeln lesen, Posting anpassen, auf Umbrüche achten, Danke.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Re: E-Mail Adressen aus txt Datei lesen und anschl. aus DB löschen

      Original geschrieben von Serra
      Kann mir vielleicht jemand helfen den Fehler zu finden?
      In deinem Textfile ist eine Leerzeile. mit LIKE '%$zeile%' wird diese eine Bedingung auf '%%', also auf alles. mit LIKE %zeile% würde übrigens auch ein hans.franke@, emil.franke@ auf franke@ passen.

      Hier ist "...WHERE Email = '$zeile'..." angebracht, mit = und ohne %. Und zum Testen wäre ein LIMIT 2 sinnvoll. Hoffentlich hast Du eine Kopie der Tabelle.

      Kommentar


      • #4
        PHP-Code:
        $emails=file("email.txt");
        foreach(
        $emails as $k=>$v){$emails[$k]="'".trim($v)."'";}
        mysql_query("DELETE FROM tabelle WHERE 
                      Email in("
        .implode(",",$emails).")") or die(mysql_error()); 
        eben korregiert
        komma in implode vergessen
        Zuletzt geändert von Slava; 22.06.2006, 11:11.
        Slava
        bituniverse.com

        Kommentar


        • #5
          Hast du den mysql_connect bei jedem schleifen durchgang??

          Wie dem auch sei ich weis nicht ob gebraucht oder nicht hier ne alternative Lösung:

          PHP-Code:
          $i 0;
          $file fopen("emails.txt""r");
          while (
          $buffer fgets($file4096)) {
             if(
          mysql_query("DELETE FROM `tabelle` WHERE `Email` = '".$buffer."'")){
                echo 
          "Zeile gelöscht! Inhalt: ".$buffer."\n<BR>";
                
          $i++;
             }
          }
          fclose($file);
          echo 
          $i." Einträge gelöscht"

          Kommentar


          • #6
            Danke für die Antworten, die Änderungen von tcpip haben funktioniert und es funktioniert.

            Dabke für die anderen Vorschläge, die Alternativen sehen dich um einiges besser aus als mein Code, und ich werde mir das mal näher ansehen .

            Kommentar

            Lädt...
            X