似乎我应该使用tinyint();但我不知道如何实现它?
问题是,如果我需要在mysql db中有一个布尔字段并用php修改它的值,您的建议是什么?
布尔字段也可以解释为1和0,因此使用tinyint字段将导致更快的数据库。如果你索引得更快。以下所有答案对你来说都是不值钱的!@felix@matthew@haim干得好
@埃特巴尔是的,的确,一切都很有帮助!
型
是的,tinyint(1)是去…您也可以使用BOOL或BOOLEAN,它们是同义词(因此没有区别)。
0在php中对false进行评估,1对true进行评估(实际上,除0以外的任何其他数字都对true进行评估,但通常使用1进行评估)。
非常感谢,已经实现了!
@felix kling除0以外的任何其他数字的计算结果都为true dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
@维斯瓦纳坦:事实上,在本例中,我所说的是PHP,而不是MySQL。
型
我不喜欢鼻涕,鼻涕,耳鸣。因为它们都不是布尔型的。您可以查看以下链接以了解"为什么":
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
我最好使用:enum("false","true")而不是空-作为数据类型。您可以从PHP传递"true"或"false"(字符串)。存储它只需要1个字节!
为什么不枚举("0","1")。
实际上,具有讽刺意味的是,字符串'false'在PHP中是Truey。
@是的,你可以。这将有助于在读取时在PHP中自动进行类型转换。但是使用枚举并不是一个安全的实践,因为您可能忘记了从PHP传递字符串。如果有人错误地声明了枚举("1"、"0"),会发生什么?我看到很多密码,比如"是"、"否"。
约恩巴迪是的。
型
您可以选择tinyint(1)或bit
在此域中插入0或1
请看这篇文章的区别:
Tinyint与Bit
感谢您的澄清!
型
你说的对,一般的解决方案是tinyint(1)。简而言之,您可以使用bool:
CREATE TABLE example (
flag BOOL
);
型
我认为,由于您实际上想要在mysql表字段上强制一个布尔(0,1)约束,最好的方法是取消对枚举的绑定。
CREATE TABLE table_name(
boolean_field_name ENUM('0', '1')
);
号