sql >> Databáze >  >> RDS >> Mysql

Doporučené postupy pro bitové příznaky v PHP

Ve vašem modelu , objekt má 8 booleovských vlastností. To znamená 8 booleovských sloupců (TINYINT pro MySQL) ve vaší databázové tabulce a 8 metod getter/setter ve vašem objektu. Jednoduché a konvenční.

Přehodnoťte svůj současný přístup. Představte si, co bude říkat další chlap, který musí tuto věc udržovat.

CREATE TABLE mytable (myfield BIT(8));

OK, vypadá to, že zde budou probíhat nějaká binární data.

INSERT INTO mytable VALUES (b'00101000');

Počkejte, řekněte mi někdo znovu, co každá z těch 1 a 0 znamená.

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

Co?

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

WTF!? WTF!?

bodne se do obličeje

-- mezitím v alternativním vesmíru, kde si víly hrají s jednorožci a programátoři nenávidí DBA... --

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

Štěstí a slunce!



  1. Průsečíky SQL a ukázky

  2. Jak získat metadata databáze

  3. Zobrazte výsledky výběru svisle v psql, jak to dělá \G MySQL

  4. Chyba 1452 porušení omezení php