Moin.
Ich möchte aus Sicherheit eine Tabelle erstellen in der eigendlich bereits gelöschte Daten in Form des SQLs die ihn wiederherstllen landen. D.h Ich hab meinet wegen in Mitglieder
den Klaus und irgendein Idiot löscht ihn. Dann soll in der Sicherheits tabelle eine Spalte mit dem Query sein der ihn wieder erstellt, also INSERT INTO Mitglieder
(Name
) VALUES (‚Klaus‘) … Nu ist die Frage wie ich an den Query direkt komme… Bei PHP My admin geht das ja recht flott mit Export als SQL gibts auch direkt nen MySQL befehl für???
Google konnte dir nicht helfen?
mysql export - Google-Suche
leider nicht, dort wir eher von Export in Dateien berichtet, ich will nur den Export String
Edit: doch auf seite 6 habich was gefunden, danke!
Edit: Für interessierte, habe folgendes geschrieben:
function createsql($tabelle,$where){
$inhalt_query = mysql_query("SELECT * FROM ".$tabelle." WHERE ".$where) or mysql_error();
while($inhalt = mysql_fetch_row($inhalt_query)){
$inhalte .= $neue_zeile."(";
for($i = 0; $i < count($inhalt); $i++){
$inhalte .= $komma."'".$inhalt[$i]."'";
$komma = ",";
}#end for
$inhalte .= ")";
unset($komma);
$neue_zeile = ",";
}#end while
$spalten_query = mysql_query("SHOW COLUMNS FROM ".$tabelle);
$spalte = "(";
while($spalten = mysql_fetch_assoc($spalten_query)){
$spalte .= $komma."`".$spalten['Field']."`";
$komma = ",";
}#end while
$spalte .= ")";
return "INSERT INTO ".$tabelle." ".$spalte." VALUES ".$inhalte;
}#end function
Eine andere Möglichkeit wäre, überhaupt keine Einträge zu löschen, sondern eine Spalte „deleted“ oder so in die Tabelle einzufügen, die bei gelöschten Einträgen gesetzt wird. Das würde ich machen.
Wenn du in jedem Fall gelöschte Datensätze aus der Tabelle der aktiven Datensätze heraushaben möchtest, könntest du auch einfach die Tabelle als „users_deleted“ o. ä. kopieren und den Datensatz als echten Datensatz dorthin verschieben. Das hätte den Vorteil, dass du Änderungen am Schema durchführen kannst (Spalten umbenennen oder entfernen), ohne die Funktionalität der INSERT-Queries zu zerstören.
In der Query, wie du sie hier erstellst, solltest du die Feldinhalte jedenfalls noch escapen.
Hi,
das klingt interessant. Ich brüte momentan auch über einer Möglichkeit, Datensätze, die gelöscht werden sollen, eben nicht wirklich zu löschen, sondern „nur so zu tun“.
Wie sähe das dann aus? Datensatz noch da, aber nicht mehr sicht- bzw. selectbar? Welche Eigenschaften bräuchte die Spalte „deleted“? Und weches SQL-Statement führt dazu, dass für einen bestimmten Datensatz das betreffende Flag gesetzt wird?
Könntest Du mir da auf die Sprünge helfen?
Danke schonmal im Voraus
Thomas
Muss man unbedingt so einen alten Thread hervorholen?
TinyInt, da nur eine 0 oder 1 reingeschrieben werden muss
[php]
$query = „update tabelle
set deleted
=1 where id=$id“;
[/php]
Schon wieder Du!
Wie man’s macht, isses verkehrt. Hole ich den alten hoch, nun ja… Und eröffne ich 'nen neuen, heißt’s, warum nutzt Du nicht die Suchfunktion?! Hmpf…
Die Suchfunktion zu benutzen ist prinzipiell richtig. Wenn man aber keine Lösung findet, sollte man nicht unbedingt einen 2 1/2 Jahren alten Thread wieder aufleben lassen.
Ein letztes Mal in den Uralt-Thread:
Klappt alles bestens und ist imho eine sehr performante Lösung. Super.
Thomas