2017-05-30 162 views
0

基本上我有一个多位置系统,用户分配给一个位置。在登录期间,他们选择他们想要登录的位置(数据库),以及选择的位置是否等于他们指定的位置,然后他们将能够继续。如果不是,则显示错误。这一切都很好,但我得到了一个新的情况 - 每个用户有多个位置。将单个sql字段中的值添加到数组中

在我的SQL表中,我有一个名为location的列,其中包含一个位置。如果我添加另一个位置用逗号分隔,有一种方法可以在用户登录时选择列时将值(即:location1,位置2)存储到数组中。

sql示例正在使用...

SELECT location FROM users WHERE userid = 25 

因此,位置行在技术上在这里有两个值。 一旦我有一个数组,我可以使用inarray()函数来执行我的检查。

+1

如果每个用户有多个位置,为什么不把它们放在一个单独的表?例如,具有'id,user_id,location'字段的'users_locations'表。 – Anton

+0

如果您有许多不应重复的单数位置,您将失去参照完整性。您可以将位置分配更改为ManyToMany关联表。命名为'users_locations',将存储用户ID和位置ID。然后你可以像下面这样执行'join':'SELECT l.name FROM users_locations AS ul JOIN locations AS L ON l.id = ul.location WHERE ul.user = 25'这样会产生用户所在的所有位置分配。 – fyrye

+0

简单。请勿添加以逗号分隔的其他位置。见正常化。 – Strawberry

回答

0

解决 我创建了一个新表来保存用户ID &位置。按用户ID选择所有位置到一个数组中,并执行我的检查功能inarray()。 允许在需要时轻松添加和移除位置。 感谢回来与前进的想法:)

0

您可以使用explode()使用针将字符串转换为数组。在你的情况下,将,

$pizza = "piece1,piece2,piece3,piece4,piece5,piece6"; 
$pieces = explode(",", $pizza); 
相关问题