Einzelne Werte in der User-Tabelle direkt ändern

Artikel, Anleitungen, Minikurse und Leitfaden für alle möglichen PC-Themen und php/phpBB.
Antworten
Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29111
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Einzelne Werte in der User-Tabelle direkt ändern

Beitrag von oxpus » Sa 18.Mär, 2006 13:28

Wenn man mal in die Verlegenheit kommt, einzelne Werte in der Usertabelle für einen, mehrere oder gleich alle User ändern zu müssen, ist der Weg über das ACP oft bewehrlich.
Hier hilft SQL aus, was z. B. mittels phpmyadmin direkt ausgeführt werden kann.
Dazu mal ein paar grundlegende Muster, was wie anzugeben ist:

Für alle Benutzer

Code: Alles auswählen

UPDATE phpbb_users SET feldname = neuer_wert;
oder wenn es an einen bestimmten User gehen soll

Code: Alles auswählen

UPDATE phpbb_users SET feldname = neuer_wert WHERE user_id = user_id;
oder auch an wenige, bzw. mehrere:

Code: Alles auswählen

UPDATE phpbb_users SET feldname = neuer_wert WHERE user_id IN (user_ids);
Dabei ist "feldname" der Name des Feldes in der Tabelle, dessen Inhalt geändert werden soll, "neuer_wert" der neue Wert, der dann im Feld stehen wird und "user_id" die, "user_ids" ein String von Benutzer-IDs (im letzteren Fall durch Kommata getrennt).

Hier in der gleichen Reihenfolge mal passende Beispiele:

Alle User

Code: Alles auswählen

UPDATE phpbb_users SET user_lang = 'german';
Ein User

Code: Alles auswählen

UPDATE phpbb_users SET user_style = 1 WHERE user_id = 2;
Wenige, bzw. mehrere User

Code: Alles auswählen

UPDATE phpbb_users SET user_viewemail = 1 WHERE user_id IN (1, 2, 3, 4, 5);
Dabei immer dran denken, die Werte in einfachen Anführungszeichen zu setzen, wenn es sich dabei um Text handelt und/oder das Feld als VARCHAR, TEXT oder ähnliches im String-Format eingerichtet ist.
Sonst wird dieser Wert als Feldname interpretiert und das führt dann in der Regel zu Fehlern.

Auch können mehrere Felder auf einen Streich angepasst werden, dazu sind diese durch Kommata getrennt nacheinander anzugeben.
Beispiel:

Code: Alles auswählen

UPDATE phpbb_users SET user_lang = 'german', user_viewemail = 1, user_notify = 0 WHERE user_id IN (3, 10, 5463);
Achtung! Alle SQL-Befehle, die eine korrekte Syntax aufweisen, also zur Ausführung keinen Fehler erzeugen, werden auch direkt ausgeführt. Eine "Undo"-Funktion gibt es hierbei nicht!
Nur durch eine gegensätzliche UPDATE-Anweisung kann man ggf. die Änderungen noch rückgängig machen.
Einzig bei einer DELETE- oder DROP-Anweisung fragt das eingesetzte Datenbanktool in der Regel nach, ob man sicher ist, diese Anweisung auszuführen. Bestätigt man dieses jedoch, sind die dadurch gelöschten Daten für immer unrettbar verschwunden!
Daher ist es wichtig, immer vor direkten Änderungen in der Datenbank ein Backup zu erstellen, notfalls auch nur von der Tabelle, die man bearbeiten will.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

Antworten