web-dev-qa-db-fra.com

Comment puis-je ajouter un champ booléen à MySQL?

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

26
Trufa

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é).

45
Felix Kling

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!

4
Muktadir

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
       );
2
Matthew Flaschen

vous avez l'option de tinyint (1) ou bit

insérer 0 ou 1 dans ce champ

voir ce post de la différence:

Tinyint vs Bit

2
Haim Evgi

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')
);
0
tormuto