sql >> Databasteknik >  >> RDS >> Mysql

Bästa metoder för bitflaggor i PHP

I din modell , objektet har 8 booleska egenskaper. Det innebär 8 booleska (TINYINT för MySQL) kolumner i din databastabell och 8 getter/setter-metoder i ditt objekt. Enkelt och konventionellt.

Tänk om ditt nuvarande tillvägagångssätt. Föreställ dig vad nästa kille som måste underhålla den här saken kommer att säga.

CREATE TABLE mytable (myfield BIT(8));

OK, det verkar som att vi kommer att ha lite binär data här.

INSERT INTO mytable VALUES (b'00101000');

Vänta, någon berätta för mig igen vad var och en av dessa 1:or och 0:or står för.

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

Vad?

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

WTF!? WTF!?

hugger sig själv i ansiktet

-- under tiden, i ett alternativt universum där älvor leker med enhörningar och programmerare inte hatar DBAs... --

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

Lycka och solsken!



  1. PHP password_verify fungerar inte mot databasen

  2. SQL UPPDATERING

  3. Hur man ändrar kolumnstorlek i MySQL

  4. Byt namn på en tabell i MySQL