UPDATE der Usertabelle für User einer best. Gruppe

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB2 oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
mad-manne
Ehemaliges Teammitglied
Beiträge: 5403
Registriert: 18.03.2005 10:00
Wohnort: Marl im Ruhrgebiet

UPDATE der Usertabelle für User einer best. Gruppe

Beitrag von mad-manne »

Hallo Leute,
ich bastle grade an einer Sache, wo ich für alle Benutzer einer bestimmten Benutzergruppe ein Feld in der USER-Tabelle updaten möchte. Ich habe jetzt folgendes Query, was soweit ich es beurteilen kann auch funktioniert. Da ich aber nur eine recht kleine Testmenge an Datensätzen habe, fände ich es schön, wenn ein paar SQL-Experten was dazu sagen könnten ...

Es geht, wie die Experten anhand des Queries wohl feststellen können um ein phpBB 2.x !

Hier mein Code:

Code: Alles auswählen

$sql = "UPDATE " . USERS_TABLE . " u, ". USER_GROUP_TABLE ." ug
	SET u.user_force_profile_update = 1
	WHERE ug.group_id = $group_id
	AND u.user_id = ug.user_id";
Vielen Dank für euer Feedback,
Manne.
Try not. Do or do not. There is no try. (YODA)
Supportanfragen via E-Mail oder PN werden ignoriert
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Ein Nachteil der Variante ist, dass sie nur unter MySQL funktioniert. Eine allgemeinere Variante wäre:

Code: Alles auswählen

$sql = "UPDATE " . USERS_TABLE . "
   SET u.user_force_profile_update = 1
   WHERE user_id IN (SELECT user_id FROM " . USER_GROUP_TABLE ." WHERE group_id = $group_id");
KB:knigge
Benutzeravatar
mad-manne
Ehemaliges Teammitglied
Beiträge: 5403
Registriert: 18.03.2005 10:00
Wohnort: Marl im Ruhrgebiet

Beitrag von mad-manne »

Pyramide hat geschrieben:Eine allgemeinere Variante wäre:
Hi Pyra ... ich war mir sicher, dass du einer von denen bist, die eine bessere Lösung kennen :D
Das Query sieht so auch viel sauberer aus, da ich ja in der Tat nur die USER-Tabelle update und nicht auch die USER_GROUP-Tabelle.

Ein kleiner Typo hatte sich bezgl. der Position des schliessenden " eingeschlichen, was hinter der Klammer des geschachtelten SELECTS stehen muss. Die korrekte Syntax lautet also:

Code: Alles auswählen

$sql = "UPDATE " . USERS_TABLE . "
   SET user_force_profile_update = 1
   WHERE user_id IN (SELECT user_id FROM " . USER_GROUP_TABLE ." WHERE group_id = $group_id)";
Gruss und Danke,
Manne.
Try not. Do or do not. There is no try. (YODA)
Supportanfragen via E-Mail oder PN werden ignoriert
Antworten

Zurück zu „phpBB 2.0: Mod-Bastelstube“