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).
 
Immer noch kein Kommentar. Jetzt wird's aber mal Zeit!
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