【问题标题】:How can I add a Boolean field to MySQL?如何将布尔字段添加到 MySQL?
【发布时间】:2011-04-25 06:23:45
【问题描述】:

看来我应该使用 tinyint();但是不知道怎么实现?

问题是如果我需要在 MySQL DB 中有一个布尔字段并使用 PHP 修改它的值,你的建议是什么

【问题讨论】:

  • 布尔字段也可以解释为 1 和 0,因此具有 tinyint 字段将导致更快的数据库。如果你索引它甚至更快。以下所有这些答案对您来说都没有价值! @Felix @Matthew @Haim 干得好
  • @etbal 是的,确实很有帮助!

标签: php mysql boolean


【解决方案1】:

是的,TINYINT(1) 是要走的路……您也可以使用同义词 BOOL or BOOLEAN(所以它没有区别)。

0 在 PHP 中计算为 false1 计算为 true(实际上,0 以外的任何其他数字计算为 true,但通常使用 1)。

【讨论】:

【解决方案2】:

我不喜欢 bool、BIT、TINYINT(1)。因为它们实际上都不是布尔值。您可以查看以下链接了解“为什么”:

http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

我最好使用:ENUM ('false', 'true') not null - 作为数据类型。您可以从 PHP 传递“真”或“假”(作为字符串)。而且只需要1个字节就可以存储!

【讨论】:

  • 为什么不用 ENUM ('0', '1') 代替
  • 实际上字符串 'false' 在 PHP 中具有讽刺意味的是。
  • @tormuto 是的,你可以。这将有助于在阅读时在 PHP 中进行自动类型转换。但是使用 ENUM 时这样做并不安全,因为您可能会忘记从 PHP 传递字符串。如果有人错误地声明了 ENUM('1', '0') 会发生什么?我看到了很多代码,例如 ('yes', 'no')。
【解决方案3】:

你说得对,一般的解决方案是tinyint(1)。可以简称为 BOOL:

CREATE TABLE example (
         flag BOOL
       );

【讨论】:

    【解决方案4】:

    你可以选择 tinyint(1) 或 bit

    在该字段中插入 0 或 1

    看这篇文章的区别:

    Tinyint vs Bit

    【讨论】:

      【解决方案5】:

      我认为,由于您实际上想对 mysql 表字段强制执行布尔 (0,1) 约束,因此最好的方法是取消枚举

      CREATE TABLE table_name(
          boolean_field_name ENUM('0', '1')
      );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-12
        • 1970-01-01
        • 1970-01-01
        • 2015-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多