如何在phpmyadmin列中有多个值?

时间:2013-07-07 03:07:36

标签: phpmyadmin

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

我现在拥有的:

---------------------------------------------------------------------------------
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',则提供访问/显示内容。

1 个答案:

答案 0 :(得分: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>