How can I add a Boolean field to MySQL?
Solution 1
Yep, TINYINT(1)
is the way to go... you can also use BOOL
or BOOLEAN
which are synonyms (so it does not make a difference).
0
evaluates to false
in PHP and 1
to true
(actually, any other number than 0
evaluates to true
, but 1
is normally used).
Solution 2
I prefer none of bool, BIT, TINYINT(1). because none of them are actually boolean. You can check the following link for 'why':
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
I would better use : ENUM ('false', 'true') not null - as datatype. You can pass 'true' or 'false' (as strings) from PHP. And it will take only 1 byte to store it!
Solution 3
You're correct that the general solution is tinyint(1)
. You can use BOOL for short:
CREATE TABLE example (
flag BOOL
);
Solution 4
you have option of tinyint(1) or bit
insert 0 or 1 to this field
see this post of the difference :
Related videos on Youtube
Trufa
Existing code exerts a powerful influence. Its very presence argues that it is both correct and necessary.
Updated on July 09, 2022Comments
-
Trufa almost 2 years
It seems I should use tinyint(); but I don't know how to implement it?
The question is what is your recommendation if I need to have a boolean field in MySQL DB and modify it´s value with PHP
-
Etienne Marais over 13 yearsA boolean field can also be interpreted as 1's and 0's so having a tinyint field will result in a faster database. And if you index it even faster. All of these answers below are off value to you! @Felix @Matthew @Haim good job
-
Trufa over 13 years@etbal Yes indeed, all VERY helpful!
-
-
Vishwanath Dalvi almost 13 years@Felix Kling not any other number than 0 evaluates to true dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
-
Felix Kling almost 13 years@Viswanathan: Actually I was talking about PHP in this case, not MySQL.
-
tormuto almost 9 yearsWhy not ENUM ('0', '1') instead
-
jonbaldie over 8 yearsActually the string
'false'
is, ironically, truey in PHP. -
Muktadir over 8 years@tormuto yes, you can. that would help auto-type casting in PHP when reading. But with ENUM it's not a safe practice to do it as you may forget to pass strings from PHP. What would happen if someone mistakenly declares ENUM('1', '0')? I saw many codes like ('yes', 'no').