Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql中的存储设置_Php_Html_Mysql_Binary Data - Fatal编程技术网

Php 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

我有一个我正在构建的应用程序,我必须保存一些页面的设置。我决定将它以二进制数据格式保存在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
编写。选择什么样的数据类型
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
对其进行解码,然后对其进行处理。这不是一个选项,因为我对所有用户都有相同的设置。谢谢你的回答。