Pour faire face à 'Boolean' valeurs dans PHP & MySQL
Actuellement, je suis en utilisant Tinyint(1)
pour indiquer Boolean
valeurs dans ma base de données MySQL, que je n'aime vraiment pas ça. Alors, comment pourrais-je stocker et de récupérer des Boolean
valeurs dans mon MySQL
des bases de données via PHP
?
Comment l'utiliser dans WHERE
clause et comment affecter la valeur dans INSERT, UPDATE
requêtes correctement?
Quand je l'ai sur le dos en PHP, il est TRUE
, true
, ou tout simplement 1
, si je vais vérifier avec ===
?
Aussi avez-vous déjà eu un problème lors de la migration à partir de Tinyint(1)
à BOOLEAN
?
Merci à l'avance. 🙂
Mise à jour:
Je sais que Tinyint(1)
est le même que Boolean
, cependant je veux travailler sur Boolean
type de données au lieu de Tinyint(1)
. C'est pourquoi je pose la question.
BOOL, BOOLEAN
ne sont que synonymes pour TINYINT(1)
dans MySQL.merci, oui, je sais, mais je veux travailler sur
Boolean
dans mon PHP côté, au lieu de Tinyint
, c'est pourquoi je pose la question ...Bien que cela dépend de votre méthodologie, vous pouvez avoir besoin de jeter le
true
false
des mots clés pour int
lors de l'insertion dans tout type int. Je crois que certaines formes de déclarations préparées cela pour vous, mais si votre requête est en ligne, alors que cela est nécessaire.OriginalL'auteur Mahdi | 2012-09-30
Vous devez vous connecter pour publier un commentaire.
MySQL n'a pas un type de données booléen. Tinyint(1) est assez proche de la assez. Travailler avec cela en PHP est simple.
Et si vraiment vous voulez vraiment une valeur booléenne que vous pouvez faire
Dans MySQL, les valeurs TRUE et FALSE sont simplement des alias pour les 1 et 0 comme expliqué dans mysql docs
OriginalL'auteur kehers
Avec les booléens, ne pas utiliser de
=== FALSE
- la valeur est déjà un booléen (sauf si la fonction nécessite l'utilisation===
, commestrpos()
). La valeur est booleanish - techniquement, il est un entier, mais PHP est un langage dynamique, de sorte qu'il n'est pas un problème.Envisager
preg_match()
la fonction elle renvoie le nombre de matches (entier).Préférez-vous écrire?
Ou que?
Évidemment, le chemin sans explicites
=== 1
est mieux. Vous vous demandez si elle correspond, pas si il a 0 matchs. Aussi, si vous pensez que=== 1
est plus sûr, pourquoi ne pas le faire=== 1 === TRUE
?Bien sûr, il est possible de convertir des valeurs à des valeurs booléennes à l'aide de
(bool)
ou!!
.Aussi, dans certains langages comme C ou en Perl, il n'y a pas de différence entre les booléens et les nombres. Il fonctionne, tout simplement.
OriginalL'auteur Konrad Borowski