Il semble que je devrais utiliser tinyint (); mais je ne sais pas comment le mettre en œuvre?
La question est quelle est votre recommandation si je dois avoir un champ booléen dans la base de données MySQL et modifier sa valeur avec PHP
Oui, TINYINT(1)
est le chemin à parcourir ... vous pouvez également utiliser BOOL
OU BOOLEAN
qui sont des synonymes (pour que cela ne fasse aucune différence).
0
est évalué à false
dans PHP et 1
à true
(en fait, tout autre nombre que 0
est évalué à true
, mais 1
est normalement utilisé).
Je préfère rien de bool, BIT, TINYINT (1). car aucun d'entre eux n'est réellement booléen. Vous pouvez vérifier le lien suivant pour «pourquoi»:
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
Je ferais mieux d'utiliser: ENUM ('false', 'true') pas null - comme type de données. Vous pouvez passer 'true' ou 'false' (sous forme de chaînes) depuis PHP. Et il ne faudra que 1 octet pour le stocker!
Vous avez raison de dire que la solution générale est tinyint(1)
. Vous pouvez utiliser BOOL en abrégé:
CREATE TABLE example (
flag BOOL
);
vous avez l'option de tinyint (1) ou bit
insérer 0 ou 1 dans ce champ
voir ce post de la différence:
Je pense que puisque vous voulez réellement appliquer une contrainte booléenne (0,1) sur un champ de table mysql, le meilleur coup reste un énum
CREATE TABLE table_name(
boolean_field_name ENUM('0', '1')
);