0

我想知道如何在行的列中有多个值。在这种情况下,为用户提供多个访问号码,以便我可以检索这些号码以进行页面访问。

我现在拥有的:

---------------------------------------------------------------------------------
id  |  first_name  |  last_name  |       email       |  password  |  date  |  access  |
---------------------------------------------------------------------------------
1   |  Test        | User        |  test@website.com | md5pass    | -date- | 2
---------------------------------------------------------------------------------

我想给用户多个访问代码/变量/整数。

像这样:

---------------------------------------------------------------------------------
id  |  first_name  |  last_name  |       email       |  password  |  date  |  access  |
---------------------------------------------------------------------------------
1   |  Test        | User        |  test@website.com | md5pass    | -date- | 2, 201, 3908
---------------------------------------------------------------------------------

这可能吗??

如果可能的话,在检索它时,我将如何处理?

我打算这样做:如果存在用户访问代码“201”,则提供访问/显示内容。

4

1 回答 1

1

你的方法可以工作;当您检索用户行时,只需爆炸并修剪access列。

但是,正确的做法是使用不同的表,例如 user_access。在最简单的情况下,这看起来像:

CREATE TABLE user_access (
  user_id int,
  access int
)

该表将为每个用户定义每个访问代码一行。这是您的示例在表格中的样子:

select * from user_access;
+---------+--------+
| user_id | access |
+---------+--------+
|       1 |      2 |
|       1 |    201 |
|       1 |   3908 |
+---------+--------+

然后,当您检索用户并且您对他们的访问级别感兴趣时,您将加入 user_access 表:

SELECT u.*, ua.access FROM users u LEFT JOIN user_access ua on u.id = ua.user_id WHERE u.id = <some user id>

(左加入,因为不能保证用户定义了任何访问权限)

或者,在两个查询中执行此操作:

SELECT * FROM users WHERE id = <some user id>
SELECT access FROM user_access WHERE user_id = <some user id>
于 2013-07-07T03:43:26.283 回答