MySQL-Tabellen mittels Wildcards löschen

07. Januar 2010
Habe im Internet mal nach einer Lösung dieses "Problems" gesucht, aber finde immer nur relativ umständliche MySQL-Kommandozeilen-Operationen (Ergebnis einlesen in Datei, greppen usw.). Diese Lösungen waren aber keine Option für mich. Einfacher gehts eigentlich so (meiner bescheidenen Meinung nach):
 
$res = $db->query( "SHOW TABLES LIKE 'invoice_%'" );
$rows = $db->fetchAll( $res );
foreach( $rows as $row ){
    foreach( $row as $key => $val ){
        $res = $db->query( "DROP TABLE IF EXISTS %s", $val );
        // hier kann noch auf Fehler/Warnungen geprüft werden
    }
}
 
Man beachte, dass ma hier keine SHOW FULL TABLES Liste generiert, da sonst zwei Felder in der jeweiligen Ergebnis-Zeile erzeugt werden und die Abfrage somit unnötig verkomplizieren würde (man will ja nur den Namen der jeweiligen Tabelle holen).
 
Kommentare, Ideen oder Vorschläge willkommen!
HILFE
Code-Beispiele werden mit den BBCodes [code][/code] dargestellt. Jedes Tag muss eine Zeile für sich allein haben, d.h der Beispiel-Code muss wirklich ZWISCHEN den Tags stehen. Beispiel:
[code] ACHTUNG! HIER UMBRUCH WICHTIG. TAG [code] MUSS ALLEIN STEHEN
#include <stdio.h>

int main( void ){
    return 0;
} ACHTUNG! HIER UMBRUCH WICHTIG. NACHFOLGENDES TAG [/code] MUSS ALLEIN STEHEN
[/code]

Alles was zwischen den beiden Tags [register] und [/register] eingetragen wird, ist nur für registrierte (und eingeloggte) User sichtbar.
Dein Name *
Deine Email
Deine Website
Vorschau