Best way for saving infinit playlists (arrays) into db? (php mySql)
So client gives me a string like "1,23,23,abc,ggg,544,tf4,"
from user 12
. There can be infinit number of elements with no spaces just value,value,... structure. I have users table (with users uId(key), names etc). I have streams table with ( sId(key), externalID, etc values). User sends me externalId's. And I need to hawe externalId's in play list (not my sId's). I need some way to store such ar开发者_运维技巧ray into my DB and be able to get it from DB.
I need to be able to do 2 things
- return such string back to user
- be able to get na array from it like
{1; 23; 23; abc; ggg; 544; tf4;}
So what is best method (best here means shourt(small amount of) code)
- to store such data into db
- to retrivew stored tata in bouth ways shown
I think, something like this should work:
User: user_id
Value: user_id, value, id
And according to your example 1,23,23,abc,ggg,544,tf4
from user 12
, you will have:
TABLE User
user_id
12
and
TABLE Value
user_id | value | id
12 | 1 | 0
12 | 23 | 1
12 | 23 | 2
12 | ggg | 4
12 | abc | 3
...
id will be used for ordering list for each user, so if you want do retrieve it, just use this query: SELECT value FROM VALUE WHERE user_id = 12 ORDER BY id
That's a classical one-to-many relationship. One user has many external ids:
User: id, name
UserExternal: user_id, id # both fields as PK, id as CHAR
To fetch every external id connected to the user just execute the following query:
SELECT u.id, u.name, ue.id AS external
FROM user u
LEFT JOIN user_external ue ON u.id = ue.user_id
精彩评论