Hallo,
ich habe ja vor einiger Zeit hier mal über das Rechte Management per Bitmuster Informationen bekommen. Nun ist ein neues Problem aufgetaucht:
Ich benutze als RechteFeld ein BIGINT Feld mit 20 Stellen, dass ja theoretisch 64 Bits hat. Diese Feld habe ich auf UNSIGNED gestellt, da dann ja alle 20 Stellen im positiven Zahlenbereich zur Verfügung stehen. Wenn ich allerdings das 32. Bit setze, wird bei PHP anstatt dem 32. Bit das erste Bit gesetzt. Liegt das an MySQL, das ja 64 bittige Zahlen zulässt oder liegt das an PHP? Was kann ich dagegen tun?
Wie gesagt, bis 32 Bit ist das alles kein Problem.
Dann hätt ich noch eine andere Frage: Wenn ich ein MYSQL Feld habe, welches Bitmuster enthält, und ich eine ganze Palette von Bits überprüfen möchte, könnte ich ja theoretisch im SELECT Befehl schon per & Operator vergleichen. Wenn ich allerdings eine Palette mit meheren Bits mit dem in der Tabelle gepeicherten Wert vergleiche, gibt mir MySQL auch Results, wo nur eins der in der Palette gespeicherten Bits aktiviert ist.
Um wirklich nur die zu bekommen, wo sagen wir mal die ersten 3 Bits gesetzt sind, müsste ich alle 3 Abfragen per AND verknüpfen ( WHERE bitlist & 1 AND bitlist & 2 AND bitlist & 3). Wie kann ich das ganze so machen, dass ich nur die Palette aus 1|2|3 in das Query aufnehmen muss?
Ciao, F.o.G.
ich habe ja vor einiger Zeit hier mal über das Rechte Management per Bitmuster Informationen bekommen. Nun ist ein neues Problem aufgetaucht:
Ich benutze als RechteFeld ein BIGINT Feld mit 20 Stellen, dass ja theoretisch 64 Bits hat. Diese Feld habe ich auf UNSIGNED gestellt, da dann ja alle 20 Stellen im positiven Zahlenbereich zur Verfügung stehen. Wenn ich allerdings das 32. Bit setze, wird bei PHP anstatt dem 32. Bit das erste Bit gesetzt. Liegt das an MySQL, das ja 64 bittige Zahlen zulässt oder liegt das an PHP? Was kann ich dagegen tun?
Wie gesagt, bis 32 Bit ist das alles kein Problem.
Dann hätt ich noch eine andere Frage: Wenn ich ein MYSQL Feld habe, welches Bitmuster enthält, und ich eine ganze Palette von Bits überprüfen möchte, könnte ich ja theoretisch im SELECT Befehl schon per & Operator vergleichen. Wenn ich allerdings eine Palette mit meheren Bits mit dem in der Tabelle gepeicherten Wert vergleiche, gibt mir MySQL auch Results, wo nur eins der in der Palette gespeicherten Bits aktiviert ist.
Um wirklich nur die zu bekommen, wo sagen wir mal die ersten 3 Bits gesetzt sind, müsste ich alle 3 Abfragen per AND verknüpfen ( WHERE bitlist & 1 AND bitlist & 2 AND bitlist & 3). Wie kann ich das ganze so machen, dass ich nur die Palette aus 1|2|3 in das Query aufnehmen muss?
Ciao, F.o.G.