将多个选择从下拉列表存储到数据库的最佳方法是什么?

What is the best way to store multiple selections from drop down list to database?

我有多个 select 下拉列表。我:

我只是想知道将它存储到 MySQL 数据库中的最佳方式是什么: 1) serialise() PHP 的方法或 2) 具有不同符号的特定格式,如逗号 (,) 竖线 (|) 等

例如,我有城市 table。它包含 city_idcity_name。 一个人可以去多个城市旅行。所以他会select多个城市。我想以某种方式存储这个 selection 以便我可以在需要时通过 mysql 加入来使用它们。

我用Laravel 5.

以规范化方式存储数据的正确方法是为所选城市单独 table。

我不知道您的选择与哪个实体相关联,但请说是用户。

用户table

id   int
name string

等等

用户城市table:

id       int
userId   int
cityId   int

城市

id       int
name     string

因此,如果用户选择三个城市,他或她将在用户 table 中有一行,在用户城市中有三行。与将选择作为连接值存储在用户 table 的一列中相比,这样做将使您能够创建更好更快的查询。要检索用户及其所在城市,您需要对 userCities 和城市进行外部联接(以便也返回没有城市的用户)。

你将有 3 tables :

  • 城市(id,名称)
  • 用户(id、姓名)
  • City_user (id, id_city, id_user)

例如您的用户 (1, Sakuto) 去过 (1, Belgium) 和 (2, France),您的 table city_user 将包含:

  • (1, 1, 1)(用户 1 已前往城市 1)
  • (2, 2, 1)(用户 1 已前往城市 2)