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):
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).
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:
Alles was zwischen den beiden Tags [register] und [/register] eingetragen wird, ist nur für registrierte (und eingeloggte) User sichtbar.
[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