【问题标题】:Store setting in mysql在mysql中存储设置
【发布时间】:2013-07-23 13:29:44
【问题描述】:

我有一个正在构建的应用程序,我必须保存一些页面的设置。我决定将它以二进制数据格式保存在 mysql 中。我有很多复选框。所以假设我有这种形式

<form>
<input type="text" value="some text" id="text">
<input type="checkbox" name="checkboxes1">
<input type="checkbox" name="checkboxes2">
<input type="checkbox" name="checkboxes3">
</form>

我有 10 个页面的设置页面与此类似。我认为我可以将这些数据以二进制数据的形式写入mysql数据库。假设第一个和最不重要的一个被选中,所以我写在 mysql 101 中。选择BLOBVARCHAR或其他什么数据类型?

【问题讨论】:

  • 我建议为每个复选框值设置不同的列。如果一个值值得被存储,它可能有一个特定的目的,并且值得一个比SUBSTR(OptionString, 3, 1)更具描述性的名称。
  • 只检查或不检查需要存储的值,所以如果有一点就足够了。
  • 听起来不错@melanholly - 我只是在玩恶魔代言人,以防万一:)

标签: php html mysql binary-data


【解决方案1】:

存储按位数据的最有效方法是使用整数数据类型。在您的情况下,每个复选框将代表整数的 1 位。例如,如果设置了复选框:

checkbox 1 checked
checkbox 2 unchecked
checkbox 3 checked

这将表示 5 (1*2^2 + 0*2^1 + 1*2^0)。根据需要存储的位数使用以下类型的整数:

tiny int:    8  bits
small int:   16 bits
medium int:  24 bits
int:         32 bits
big int:     64 bits

更多信息请见http://dev.mysql.com/doc/refman/5.6/en/integer-types.html

【讨论】:

  • 所以我可以将数据转换为整数 bindec 并以这种方式存储,然后我可以使用 decbin 对其进行解码,然后对其进行处理
【解决方案2】:

您可以创建一个默认设置表,然后创建一个相应的表来存储个人用户设置。您可以使用bittinyint 数据类型来指示选项是关闭还是打开。

设置默认值
settingId 设置默认值
1 加载图片 1
2 加载广告 0

设置用户
userId settingId 值
1 1 0

这里的好处是,如果用户设置与默认设置不同,您只需存储它们。

【讨论】:

  • 这不是一个选项,因为我对所有用户都有相同的设置。谢谢你的回答。
猜你喜欢
  • 1970-01-01
  • 2013-11-25
  • 1970-01-01
  • 2012-12-05
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 1970-01-01
  • 2014-12-09
相关资源
最近更新 更多