将无限播放列表(数组)保存到数据库中的最佳方法是什么? (php mySql)

时间:2010-05-02 20:50:57

标签: php mysql arrays string database

因此,客户向我提供了来自用户"1,23,23,abc,ggg,544,tf4,"的{​​{1}}字符串。可以有无限数量的元素,没有空格只是值,值,......结构。我有用户表(用户uId(密钥),名称等)。我有流表(sId(key),externalID等值)。用户发给我externalId的。而且我需要hawe externalId的播放列表(不是我的sId)。我需要一些方法将这样的数组存储到我的数据库中,并能够从数据库中获取它。

我需要做两件事

  1. 将此类字符串返回给用户
  2. 能够像12
  3. 一样从中获取na数组

    那么什么是最好的方法(这里最好的意思是shourt(少量)代码)

    1. 将此类数据存储到db
    2. 以所示的方式回收存储的tata

2 个答案:

答案 0 :(得分:1)

这是一种经典的一对多关系。一个用户有许多外部ID

User:         id, name
UserExternal: user_id, id # both fields as PK, id as CHAR

要获取连接到用户的每个外部ID,只需执行以下查询:

SELECT u.id, u.name, ue.id AS external
FROM user u
LEFT JOIN user_external ue ON u.id = ue.user_id

答案 1 :(得分:1)

我认为,这样的事情应该有效:
User: user_id Value: user_id, value, id
根据用户1,23,23,abc,ggg,544,tf4的示例12,您将拥有:

TABLE User  
user_id  
12

TABLE Value  
user_id | value | id  
12      | 1     | 0  
12      | 23    | 1  
12      | 23    | 2  
12      | ggg   | 4  
12      | abc   | 3  
...

id将用于每个用户的排序列表,因此如果您想要检索它,只需使用此查询:SELECT value FROM VALUE WHERE user_id = 12 ORDER BY id