sql >> Database teknologi >  >> RDS >> Mysql

Bedste praksis for bitflag i PHP

I din model , objektet har 8 booleske egenskaber. Det indebærer 8 booleske (TINYINT for MySQL) kolonner i din database tabel og 8 getter/setter metoder i dit objekt. Enkel og konventionel.

Genovervej din nuværende tilgang. Forestil dig, hvad den næste fyr, der skal vedligeholde denne ting, vil sige.

CREATE TABLE mytable (myfield BIT(8));

OK, det ser ud til, at vi vil have nogle binære data, der sker her.

INSERT INTO mytable VALUES (b'00101000');

Vent, nogen fortæller mig igen, hvad hver af disse 1'ere og 0'ere står for.

SELECT * FROM mytable;
+------------+
| mybitfield |
+------------+
| (          | 
+------------+

Hvad?

SELECT * FROM mytable WHERE myfield & b'00101000' = b'00100000';

WTF!? WTF!?

stikker sig selv i ansigtet

-- i mellemtiden, i et alternativt univers, hvor feer leger med enhjørninger og programmører ikke hader DBA'er... --

SELECT * FROM mytable WHERE field3 = 1 AND field5 = 0;

Lykke og solskin!



  1. MySQL konverter mellem to datoformater

  2. Hvad er DTU i Azure SQL Database, og hvordan finder man ud af, hvor meget vi har brug for

  3. Hvordan får man antallet af dages forskel mellem to datoer på MySQL?

  4. Gruppering af tabeller i en MySQL-database