【问题标题】:Storing a Yes / No radio button into a MySQL database将是/否单选按钮存储到 MySQL 数据库中
【发布时间】:2011-11-24 21:34:59
【问题描述】:

我看到一个是/否表单单选按钮值以几种不同的方式存储/保存。我想知道哪种方式更好,为什么?这是针对带有典型是/否问题作为表单一部分的 PHP/MySQL 应用程序。

1.) 将其存储为 1、0 或 null。 1 表示是,0 表示否,null 表示不回答。

2.) 将其存储为 Yes、No、null。假设可以进行语言转换。

3.) 使用 1、2 和 null 以便更好地区分值。

谢谢,杰夫

编辑:我还必须提到,大多数问题都是由 jQuery/JavaScript 以及比较和 $() 绑定引起的。

【问题讨论】:

    标签: php jquery html forms codeigniter


    【解决方案1】:

    我认为这就是 ENUM 类型的用途。您可以像这样设置存储字段类型:

    ENUM('no','yes')
    

    并允许 NULL 作为默认值。如果答案是“否”——字段值实际上是 0(“否”的索引),如果答案是“是”,则为 1。而且您将有一个很好的列表示形式 - 'yes' 和 'no' 而不是 1 和 0。虽然这些值实际上会存储为 0 和 1。我认为使用 TINYINT 是一个优势。

    【讨论】:

    【解决方案2】:

    由于 MySQL 有一个 BOOLEAN 类型,但它只是 TINYINT 的别名。我建议不要这样做,因为 PHP == 中的等号无法区分 0 和缺少值。你总是需要使用三等号 === 并且很容易出错。

    至于你的选择:

    1. 这似乎是 PHP 的自然选择,但是你必须小心区分 0 和缺乏价值,所以我不推荐它。

    2. 我不会推荐这个。

    3. 可以,但是对 1 和 2 的赋值有些随意,在代码中可能难以记忆和阅读。

    我通常做的是,如果需要,在 CHAR(1) 字段中使用“Y”、“N”和 NULL,它在代码中读取良好并且不会产生问题。

    【讨论】:

    • @Codemonkey 用你的建议更新了我的答案以及我为什么不使用 MySQL BOOLEAN。
    【解决方案3】:

    由于 mysql 处理数字的速度更快(在搜索、排序时), 在你的情况下它需要更少的空间, 而且只有 3 个值 (1, 0 nul l) 并且在二进制格式中,1 和 0 只有一个有效位(0000000 和 0000001),在进行任何比较的情况下,在遍历这些列时,速度应该保持较高并且查询将花费更少的时间。

    所以我认为你可以选择第一个选项。

    【讨论】:

      【解决方案4】:

      我不知道它是否有帮助,但在我的系统中,我使用 1 表示是,0 表示否,只使用 NO 值作为 null - 或者如果我必须指定我在结构中设置一个默认值。

      我认为这个系统更灵活,您可以随时使用这些数据进行操作,例如,如果您不想显示 0/1 值,您可以设置类似

      if(table.field == 1)
          echo yes;
      else
          echo no;
      

      此外,将此值与任何其他数据库值进行比较更容易。

      【讨论】:

        【解决方案5】:

        我会选择 0/1/null 来表示 No/Yes/Blank。 0 始终用作false,1 始终用作true

        【讨论】:

          【解决方案6】:

          使用TINYINT(1)。如果您希望使用“未回答”选项,请允许 NULL。您也可以使用BOOLEAN,因为它只是上述数据类型的别名。 MySQL 推荐这种存储布尔数据的方式。

          更多详情:Which MySQL data type to use for storing boolean values

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-07-08
            • 2016-09-09
            • 1970-01-01
            相关资源
            最近更新 更多