在数据库中使用空白值?

时间:2014-04-02 18:43:02

标签: php forms checkbox

如果未选中复选框,则会在提交表单后在db字段中生成空白值。

我可以在提交表单之前为空复选框指定一个值:

if (empty($checkbox1)){
 $checkbox1='none';
}

在数据库或一堆字段中插入一堆空字段是否更好?" none" ? 在我看来,#34;没有"字段是多余的,会占用更多空间......

3 个答案:

答案 0 :(得分:2)

我认为您应该为该复选框分配一个可以假设两个值的数据库字段:0和1.其中一个将等于“已检查”,另一个将等于“无”

答案 1 :(得分:2)

您可以使用以下方法:enum,bit(1)或tinyint(1),因为您正在使用类似布尔值的变量。

如果您正在考虑性能,则枚举和位之间的区别不是那么一点:http://techhelplist.com/index.php/tech-tutorials/42-databases/65-mysql-performance-bit-vs-tinyint-vs-enum

但是如果你正在考虑使用的存储空间,enum和tinyint都使用8byte的存储空间,而bit(1)只使用1bit。 mysql中的数据类型BOOLEAN是tinyint(1)的同义词,所以请注意使用该类型。

因此,最后你可以更好地使用bit(1)来存储复选框的结果,与之前给定的枚举解决方案相比。

有关为何不使用枚举的更多信息,请阅读http://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is-evil/

答案 2 :(得分:1)

我这样做的方法是按如下方式定义DB字段:

Type: Enum
Length/Values: 'yes', 'no'
Default as defined: no

使用此方法,只需选中复选框(或更改状态)即可进行更新。

正如其他人所说,空间可以忽略不计。