MySQL-Tabellen mittels Wildcards löschen
7. Januar 2010 | 12:49:12
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):
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).
$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).


Beispiele für BBCodes:
[indent][b]alert[/b]("Hallo");
</script>[/code]
Hinweis: Mittels "Vorschau ausschalten" kann man die Live-Preview-Funktion abschalten. Dies kann sich vorteilhaft auf die Geschwindigkeit bei der Texteingabe auswirken.