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'"); 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 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'"); > 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')"); PHP-Code: $query = $db->query("UPDATE mybb_users SET usergroup = '2' WHERE (usergroup != '4' OR usergroup != '6' OR usergroup != '12') AND lastactive <= '1577833199'"); 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 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. 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.Die Antwort lautete: (25.08.2021, 15:51)Schnapsnase schrieb: additionalgroups ist normalerweise leer und nicht NULLwas somit PHP-Code: $query = $db->query("UPDATE mybb_users SET additionalgroups = '' WHERE usergroup = '10'"); 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'"); PHP-Code: $query = $db->query("UPDATE mybb_users SET additionalgroups = '' WHERE usergroup = '10'"); 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. |