Php mysql中的存储设置
我有一个我正在构建的应用程序,我必须保存一些页面的设置。我决定将它以二进制数据格式保存在mysql中。我有很多复选框。假设我有这种形式Php mysql中的存储设置,php,html,mysql,binary-data,Php,Html,Mysql,Binary Data,我有一个我正在构建的应用程序,我必须保存一些页面的设置。我决定将它以二进制数据格式保存在mysql中。我有很多复选框。假设我有这种形式 <form> <input type="text" value="some text" id="text"> <input type="checkbox" name="checkboxes1"> <input type="checkbox" name="checkboxes2"> <input type="c
<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
编写。选择什么样的数据类型BLOB
,VARCHAR
或其他什么?您可以创建一个默认设置表,然后创建一个相应的表来存储各个用户设置。您可以使用位
或tinyint
数据类型来指示选项是否关闭/打开
settingDefault
settingId setting default
1 loadImages 1
2 loadAds 0
settingUser
userId settingId value
1 1 0
设置默认值
设置ID设置默认值
1下载图像1
2下载0
设置用户
用户ID设置ID值
1 1 0
这里的优点是,如果用户设置与默认设置不同,则只需存储它们。存储逐位数据的最有效方法是使用整数数据类型。在您的情况下,每个复选框将表示整数的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
有关更多信息,请参见我建议为每个复选框值设置不同的列。如果某个值值得存储,那么它可能有特定的用途,并且应该有一个比
SUBSTR(OptionString,3,1)
更具描述性的名称。需要存储的值只需检查或不检查,因此如果有一点需要,就足够了。听起来不错@melanholly-我只是在扮演魔鬼代言人,以防万一:)因此我可以将数据转换为整数bindec
并以这种方式存储,然后我可以使用decbin
对其进行解码,然后对其进行处理。这不是一个选项,因为我对所有用户都有相同的设置。谢谢你的回答。