Php 如何在MySQL的一个单元格中为单个项存储多个值

Php 如何在MySQL的一个单元格中为单个项存储多个值,php,mysql,Php,Mysql,序列化是最好的方法吗 比如说,如果我有一个音乐数据库,我想按流派对音乐进行分类。如果我允许一张专辑有多种风格,我是否将它们存储为数组并序列化?像这样 $array=serialize(数组(1,2,3))//数字是类型的ID 我是从这里的另一个帖子上得到的。我知道我可以把它们拆开。我不明白的是如何编写SQL语句来检索部分或全部数据。如果要检索给定唱片集的所有类型,我的SQL语句会是什么样子?这取决于您要运行的查询,但您应该将类型放入自己的表中: Genre id | name 并创建一个将相册

序列化是最好的方法吗

比如说,如果我有一个音乐数据库,我想按流派对音乐进行分类。如果我允许一张专辑有多种风格,我是否将它们存储为数组并序列化?像这样

$array=serialize(数组(1,2,3))//数字是类型的ID


我是从这里的另一个帖子上得到的。我知道我可以把它们拆开。我不明白的是如何编写SQL语句来检索部分或全部数据。如果要检索给定唱片集的所有类型,我的SQL语句会是什么样子?

这取决于您要运行的查询,但您应该将类型放入自己的表中:

Genre
id | name
并创建一个将相册与流派关联的表:

Album_Genre
album_id | genre_id
您确实希望将数据标准化,并将流派和唱片集到流派的关联存储在不同的表中

i、 e:你最好有三张桌子:

  • 相册相册数据
  • 流派流派数据
  • 唱片集->流派查找形成每个关联的唱片集id和流派id

  • 通过这样做,您将能够根据将来的需要轻松地添加/删除等类型,并且能够通过加入表来执行查找,而不必执行字符串操作。

    您应该使用

    维基百科关于的文章有一个很好的例子,涉及到有多个电话号码的人

    不要

    对于多对多关系,您需要第三个表:

    songs: id, name, ...
    
    genres: id, name, ...
    
    relation_songs_genres: song_id, genre_id
    

    你试图建立一种多对多的关系(音乐与流派)。因此,您应该创建一个单独的表(流派),然后创建一个交叉引用表(音乐流派),其中包含来自音乐和流派表的ID。

    或者我应该以另一种方式存储数据,因为我将有一个很长的类型列表。如果我只想从序列化数组中获取其中一个值呢?非常相关的问题:我可以为一张专辑存储多个类型吗?@shummel7845是的。您只需在相册->流派查找表中为该相册添加两个条目即可。+1按流派提取相册的sql是
    SELECT*from-Genre-inner-join-Album\u-Genre-on-Genre\u-id=id,其中name='reagge'