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).
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:
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