Ik heb een code die een gegeven PHP variabele vergelijkt met een veld in mijn database. Beide waarden zijn een kleur in de vorm van een int. Doormiddel van bit shifting kan ik de RGB waarde vinden en vergelijken.
Dit werkt perfect in Mysql 4.1 maar nu moet ik hetzelfde doen op een server met Mysql 5.1 en opeens werkt het niet meer. Heeft iemand enig idee hoe dit kan?
Deze code is vergelijkbaar met mijn code, en laat geeft wel een geldige colorDiff terug in 4.1 maar niet in 5.0
Na wat testen merkte ik dat de bitwise operator zelf het gewoon doet, dit geeft bijvoorbeeld gewoon netjes 22 terug als colorDiff:
Ik heb al geprobeerd om mijn velden van int( 8 ) naar bigInt( 8 ) of double( 8,0 ) te zetten, maar het blijft allemaal rare uitkomsten geven. De uitkomst kan soms bijvoorbeeld 0 zijn terwijl het eigenlijk 10 moet zijn, maar is soms ook opeens super hoog (1845147641742-achtig).
Dit werkt perfect in Mysql 4.1 maar nu moet ik hetzelfde doen op een server met Mysql 5.1 en opeens werkt het niet meer. Heeft iemand enig idee hoe dit kan?
Deze code is vergelijkbaar met mijn code, en laat geeft wel een geldige colorDiff terug in 4.1 maar niet in 5.0
SQL:
1
2
3
4
| "SELECT *, ABS((theColor >> 16 & 255) - ($myColor >> 16 & 255)) AS colorDiff FROM myTable ORDER BY colorDiff ASC LIMIT 1;" |
Na wat testen merkte ik dat de bitwise operator zelf het gewoon doet, dit geeft bijvoorbeeld gewoon netjes 22 terug als colorDiff:
SQL:
1
2
3
4
| "SELECT *, (1461616 >> 16 & 255) AS colorDiff FROM myTable ORDER BY colorDiff ASC LIMIT 1;" |
Ik heb al geprobeerd om mijn velden van int( 8 ) naar bigInt( 8 ) of double( 8,0 ) te zetten, maar het blijft allemaal rare uitkomsten geven. De uitkomst kan soms bijvoorbeeld 0 zijn terwijl het eigenlijk 10 moet zijn, maar is soms ook opeens super hoog (1845147641742-achtig).