MyBB.de Forum
SQL-Befehl > Aus Zusatzgruppen entfernen - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: MyBB 1.8.x (https://www.mybb.de/forum/forum-87.html)
+--- Forum: Sonstiges (https://www.mybb.de/forum/forum-91.html)
+--- Thema: SQL-Befehl > Aus Zusatzgruppen entfernen (/thread-37954.html)

Seiten: Seiten: 1 2


SQL-Befehl > Aus Zusatzgruppen entfernen - Gerti - 25.08.2021

Hallole,

mit diesem SQL-Befehl
PHP-Code:
$query $db->query("UPDATE mybb_users SET additionalgroups = '15,16' WHERE usergroup = '10'"); 
kann man ja mit "SET" Usern zusätzliche Gruppen zuweisen.

Mit welchem SQL-Befehl kann ich die vorstehend zugewiesenen Zusatzgruppen wieder pauschal auf "keine" setzen? Mit z.B.
PHP-Code:
$query $db->query("UPDATE mybb_users SET additionalgroups = '0' WHERE usergroup = '10'"); 

Ich frage lieber vorher, bevor ich mir etwas zerschieße und dann die vorher erstellte Datensicherung benötige.

Vorab Danke für jedwede Hilfestellung.


RE: SQL-Befehl > Aus Zusatzgruppen entfernen - Schnapsnase - 25.08.2021

additionalgroups ist normalerweise leer und nicht NULL Wink


RE: SQL-Befehl > Aus Zusatzgruppen entfernen - Gerti - 25.08.2021

Darum fragte ich im Vorfeld einer auszuführenden Maßnahme.

Thanks for help


RE: SQL-Befehl > Aus Zusatzgruppen entfernen - Jockl - 25.08.2021

Ein Tip, der ggf. bei solchen Fragestellungen (hier: den Wert in einer Tabelle auf den Originalzustand zurücksetzen) noch interessant sein könnte:

Ein Blick in die MyBB DB-Installation im Bereich Doku -> Crossreference und dort in die Zeile 1065 der install/ressources/mysql_db_tables.php. Man muss die Zeile nicht wissen, kann aber in der Datei nach "additionalgroups" in der Tabelle "mybb_users" suchen.


RE: SQL-Befehl > keine korrekte Funktion!? - Gerti - 04.09.2021

Hallo,

ich habe einen Task, in welchem ich den Usern automatisch entsprechende Rechte und Zusatzgruppen etc. zuweisen kann. Neue User werden zunächst automatisch in eine Gruppe (2) zugewiesen und wenn ich dann den User in die Gruppe z.B. 4 oder 12 verschieben, läuft der Rest über den Task automatisch ab. Dies funktioniert seit Monaten problemlos.

Nun wollte ich alle User, deren Besuch (lastvisit) z.B. vor dem 01.01.2020 (
1577833199 = 31.12.2019 - 23:59:59)
war, automatisch in die Gruppe 2 zurück verschieben, aber nicht wenn der User der Gruppe 4 oder 6 zugewiesen ist. Zum Testen habe ich einen neuen Testadmin (Gruppe 4) sowie einen Testmoderator (Gruppe 6) angelegt und diese werden nach Ausführung des nachstehenden SQL-Befehls in die Gruppe 2 verschoben.

Die beiden Testaccounts haben als lastvisit definitiv eine höhere Unixzeit als das im SQL-Befehl lastvisit definiert ist.

Folgenden SQL-Befehl  habe ich verwendet:
PHP-Code:
$query $db->query("UPDATE mybb_users SET usergroup = '2' WHERE (usergroup != '4' OR usergroup != '6' OR usergroup != '12') AND lastvisit <= '1577833199'"); 
A) Ergebnis von gestern (beide Accounts neu angelegt):
> Testadmin (4) und Testmoderator (6) werden in die Gruppe 2 verschoben

B) Ergebnis von heute (Testmoderator gelöscht und neu angelegt):
> beim Testadmin (4) ändert sich nichts geändert (wie SQL-Vorgabe) und der Testmoderator (6) wird in die Gruppe 2 verschoben (wurde neu angelegt).

Nehme ich jedoch lastactive mit hinzu
PHP-Code:
$query $db->query("UPDATE mybb_users SET usergroup = '2' WHERE (usergroup != '4' OR usergroup != '6' OR usergroup != '12') AND (lastvisit <= '1577833199' AND lastactive <= '1577833199')"); 
oder anstelle lastvisit nur lastactive
PHP-Code:
$query $db->query("UPDATE mybb_users SET usergroup = '2' WHERE (usergroup != '4' OR usergroup != '6' OR usergroup != '12') AND lastactive <= '1577833199'"); 
funktioniert alles sofort genau so wie gewünscht.

Kann mir jemand etwas Licht in meine Dunkel bringen bzw. mir dieses Verhalten erklären?


RE: SQL-Befehl > Aus Zusatzgruppen entfernen - itsmeJAY - 04.09.2021

(25.08.2021, 15:51)Schnapsnase schrieb: additionalgroups ist normalerweise leer und nicht NULL Wink

Sorry aber das macht keinen Sinn.. Gertis query sagt 0 und nicht NULL.. und du widersprichst dir selber, denn wenn es leer ist ist es NULL. Bitte 0 mit NULL nicht gleichsetzen.

@Gerti: dein Fehler wird der OR Operator sein. Probier es halt mal mit AND. Deine Unterabfrage ergibt TRUE, was so nicht gewünscht ist.


RE: SQL-Befehl > Aus Zusatzgruppen entfernen - Schnapsnase - 05.09.2021

(04.09.2021, 23:13)itsmeJAY schrieb: Gertis query sagt 0 und nicht NULL.. und du widersprichst dir selber, denn wenn es leer ist ist es NULL.

Was soll denn dieser Blödsinn?!
Es war von mir eine (zugegeben inkorrekte) Schreibweise. Genauso gut hätte ich "0" oder "Null" schreiben können.
Ich wollte Gerti lediglich etwas deutlicher machen, was ich meine.

Ich werde aber künftig erst Deine Antworten abwarten, bevor ich mich hier noch zu irgendwas außere. Rolleyes


RE: SQL-Befehl > Aus Zusatzgruppen entfernen - StefanT - 05.09.2021

Er hat durchaus Recht, NULL bezeichnet in der Informatik einen speziellen leeren Wert, der gerade nicht der Zahl 0 entspricht: https://de.m.wikipedia.org/wiki/Nullwert
Dies spielt insbesondere bei Datenbanken eine besondere Rolle, hier kann bei jeder einzelnen Spalte festgelegt werden, ob sie NULL werden kann oder nicht (NOT NULL). Anders als bei PHP, das Datentypen automatisch umwandeln kann, werden beide Werte bei MySQL strikt unterschieden.


RE: SQL-Befehl > Aus Zusatzgruppen entfernen - Gerti - 06.09.2021

Meine Frage lautet:
(25.08.2021, 15:19)Gerti schrieb: Mit welchem SQL-Befehl kann ich die vorstehend zugewiesenen Zusatzgruppen wieder pauschal auf "keine" setzen? Mit z.B.
PHP-Code:
$query $db->query("UPDATE mybb_users SET additionalgroups = '0' WHERE usergroup = '10'"); 
Die Antwort lautete:
(25.08.2021, 15:51)Schnapsnase schrieb: additionalgroups ist normalerweise leer und nicht NULL Wink
was somit
PHP-Code:
$query $db->query("UPDATE mybb_users SET additionalgroups = '' WHERE usergroup = '10'"); 
ergibt.

Daraus entstand eine Diskussion bzgl. "Null" (= '') oder '0' welche für mich als Endanwender (möchte lediglich den korrekten SQL-Befehl in einem Task einsetzen) trotz des Hinweises von StefanT nicht so ganz verstehe, dies insbesondere weil Schnapsnase nunmehr schrieb:
Zitat:Es war von mir eine (zugegeben inkorrekte) Schreibweise. Genauso gut hätte ich "0" oder "Null" schreiben können.
womit wir wieder bei meinen obigen ersten SQL-Befehl wären.

Ist jetzt
PHP-Code:
$query $db->query("UPDATE mybb_users SET additionalgroups = '0' WHERE usergroup = '10'"); 
oder
PHP-Code:
$query $db->query("UPDATE mybb_users SET additionalgroups = '' WHERE usergroup = '10'"); 
richtig?
Gehe ich schlußfolgernd korrekt in der Annahme, dass '0' verwendet werden muss?




(04.09.2021, 23:13)itsmeJAY schrieb: @Gerti: dein Fehler wird der OR Operator sein. Probier es halt mal mit AND. Deine Unterabfrage ergibt TRUE, was so nicht gewünscht ist.
Mit AND funktioniert es! Nach langem Grübeln (es wollte mir nicht einleuchten warum OR nicht funktionert) ist mir die Logik so gaaanz langsam etwas schlüssig.


RE: SQL-Befehl > Aus Zusatzgruppen entfernen - Schnapsnase - 06.09.2021

Gerti,

die zweite Variante ist richtig.
Sorry für die Verwirrung. Ich wollte hier keine Lawine lostreten, sondern mit meiner inkorrekten Schreibweise "NULL" nur auf deine "0" im Query hinweisen, die so nicht Korrekt war. Wink