在db

时间:2016-01-03 17:41:38

标签: php arrays

我有一个包含24个不同按钮的页面。

当用户登录时,我必须检查他是否有权单击该按钮并激活该特定功能。所以我想的是以这种方式存储一个包含24个项目的数组:

[0]=>'yes',
[1]=>'no
所有按钮都是

等等。

当我在登录时从数据库中检索此数组时,我将其存储在$ _SESSION数组中,然后对于我可以执行的每个按钮

if($_SESSION['right'][0]=='yes'){
    //show the button
}else{
    //hide the button
}

数组将存储在一个表中,其中将存在所有不同的用户配置文件(因此每个数组只存在一次),并且每个用户都将加入配置文件ID。

将数组存储在数据库中的最佳方法是什么?或者我想念一个更好的方法来实现我的目标?

4 个答案:

答案 0 :(得分:1)

你可以serialize()你的数组并将它插入mysql的varchar字段中,稍后当你需要它时,从db和unserialize()获取它。但更好的方法是使表格成为关系。

答案 1 :(得分:1)

查看bitmask approach

您可以在一个整数中存储最多32或64(在64位系统上)的值。

每个按钮都有一个数字2 ^ n,其中n是按钮索引。结果数字是所有有效按钮数字的总和。

答案 2 :(得分:0)

我在某些CMS中看到过像Wordpress和OpenCart一样的方式。

存储为序列化字符串的数组。 所以,你可以使用 序列化($ array_value) 插入,和 $ array_value = unserialize($ row ['field1'])来选择。

答案 3 :(得分:0)

不要将数据存储在数据库中。这违背了DB的目的。

使用用户标识作为外键创建权限表,然后为每个权限添加INT(1) UNSIGNED列。零表示否,一表示是。