首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP -如何从数据库中将字符串信息解析为可用的形式

PHP -如何从数据库中将字符串信息解析为可用的形式
EN

Stack Overflow用户
提问于 2012-03-30 20:49:09
回答 4查看 183关注 0票数 3

我正在开发一个有多个应用程序的web应用系统,每个应用程序都有一个主键来识别它们。每个用户都有一个与应用程序相关联的安全级别,例如app #1,其安全级别为5。我希望将所有应用程序/安全信息作为令牌存储在数据库中,然后检索该信息,以便将其存储在会话中。

因此,考虑到以下应用程序:

  1. 任务应用程序
  2. 电子邮件应用程序
  3. 备注程序

如果用户的安全级别分别为3、5和7,则令牌将存储为:

代码语言:javascript
运行
复制
1.3|2.5|3.7.

我的问题是,如何以可用的形式检索数据?我想把它放在数组中,使用App的数组键,比如somearray[1] = 3somearray[2] = 5等等,但我不知道如何处理。

我在这方面还处于起步阶段,所以我对建议有一个非常开放的想法。提前谢谢你的帮助。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-30 20:54:55

令牌将存储为: 1.3-2.5-3.7。

为什么不将安全级别存储在数据库中呢?管理起来会容易得多。我能想象到几乎没有几张桌子是这样的:

代码语言:javascript
运行
复制
App
--------
id
name
....

Users
--------
id
name
email
...

App_users_permissions
--------
id
app_id (references App.id)
user_id (references Users.id)
level

然后,您可以执行以下简单的查询:

代码语言:javascript
运行
复制
SELECT level FROM App_users_permissions WHERE user_id = 1 AND app_id = 2

然后,该查询将返回给定的应用程序id和用户id的当前Preil日id。

我认为这是最简单的办法。

票数 3
EN

Stack Overflow用户

发布于 2012-03-30 21:37:00

您应该按照皮埃尔·奥利维尔·布尔吉的建议重新设计您的数据库。

如果您想坚持所描述的格式,可以使用preg_match_all()

代码语言:javascript
运行
复制
$subject = '1.3|2.5|3.7.';
$pattern = '=(\d+)\.(\d+)=';
$result = preg_match_all($pattern, $subject, $subpattern, PREG_SET_ORDER);
foreach ($subpattern as $match) {
    $out[$match[1]] = $match[2];
}
print_r($out);
票数 2
EN

Stack Overflow用户

发布于 2012-03-30 20:54:27

如果您真的希望将这些东西存储为一个字符串(您不应该这样做),您可以使用爆炸()再次将其分解。

无论如何,更好的解决方案是正确规范数据库 (一步一步的指南)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9950239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档