Hi Schnapsnase,
das sollte beides klappen. Wieso sollte deiner Meinung nach ein Query falsch sein? In dem einen fragst du halt die gid ab und in dem anderen die usergroup.
Übrigens kann das AND wegfallen. Der Query sagt doch, dass bei
allen Benutzern allownotice auf 1 gesetzt werden soll, bei denen es
jetzt gerade auf 0 steht. Da die Spalte nur den Wert 1 und 0 annehmen kann, macht es also keinen Unterschied, ob das "AND" wegfällt oder nicht. In der Zeit wo du das "AND ...." hinschreibst, wäre der Query schon durchgelaufen.
Bedeutet: Fällt das AND weg, ist das Schlimmste was passieren kann: Die Datenbank macht bei Benutzern allownotice zu 1 bei denen es sowieso bereits auf 1 steht
Wichtig ist auch: Vergiss bei einem Update-Befehl in SQL niemals die "where"-Klausel. Viele führen den Befehl zu schnell aus!
Code:
UPDATE mybb_users
SET allownotices = 1;
würde z. B. bedeuten, das bei
ALLEN Benutzern (allen Datensätzen in mybb_users) allownotices auf 1 gesetzt wird. Hast du kein Backup vorher gemacht, wird es etwas schwierig nachzuvollziehen, wie der Zustand vorher war. Das ist bei "allownotices" vielleicht halb so wild, aber stell dir mal eine Datenbank vor, in der Kundendaten gepflegt werden und du überschreibst eine Konto-Nr. ohne where-Klausel
Also immer mit where-Klausel:
Code:
UPDATE mybb_users
SET allownotices = 1
WHERE usergroup = X AND allownotices = 0;
Am besten merkst du dir:
Sobald du einen Update-Befehl ausführen willst, schreibst du erstmal die Schlüsselwörter hin und füllst anschließend aus! Also z. B erstmal hinschreiben:
.. anschließend füllst du diese Werte. Dann vergisst du die WHERE-Klausel garantiert nicht!
Wenn du dir gerade SQL anguckst. Hier nochmal eine schnelle und leicht verständliche Info. Die gute alte Konvention:
https://www.sqlstyle.guide/de/#abfragesyntax
Zitat:Verwenden Sie immer Großbuchstaben für reservierte Schlüsselwörter wie SELECT und WHERE.