将是/否单选按钮存储到MySQL数据库中

时间:2011-09-26 02:48:37

标签: php jquery html forms codeigniter

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

1。)将其存储为1,0或null。 1为是,0为否,无回答。

2。)将其存储为是,否,为空。假设可以进行语言转换。

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

谢谢,杰夫

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

6 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:4)

由于MySQL具有BOOLEAN类型,但它只是TINYINT的别名。我建议反对它,因为PHP ==中的等号不会区分0和缺少值。你总是需要使用三等于===而且很容易出错。

至于你的选择:

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

  2. 我不推荐这个。

  3. 可能,但对1和2的赋值有点武断,可能难以记住并在代码中读取。

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

答案 2 :(得分:0)

对于No / Yes / Blank,我会使用0/1 / null。 0始终用作false,1用于true

答案 3 :(得分:0)

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

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

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

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

答案 4 :(得分:0)

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

所以我想你可以先选择。

答案 5 :(得分:0)

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

ENUM('no','yes')

并允许NULL作为默认值。如果答案为“否” - 字段值实际上为0(索引为“否”),如果答案为“是”则为1。你会对列有一个很好的表示 - '是'和'不'而不是1和0.虽然这些值可以存储为0和1.我认为这是使用TINYINT的一个优点。