Php 如何在MySql中存储多个选择选项以便于搜索

Php 如何在MySql中存储多个选择选项以便于搜索,php,mysql,select,insert,Php,Mysql,Select,Insert,我不确定将多个select选项存储到mysql中的最佳方法。最初,我创建了一个以逗号分隔的选定值列表。我已经读到这是一种糟糕的编程实践,并且在尝试找出如何使用逗号分隔的varchar值搜索数据库中的三列时也遇到了困难,例如:1,5,17。似乎最好的做法是创建第三个表,为上面的示例插入3条记录。此表将通过id链接 例如: 表1年龄级别SHAS字段id和年龄级别婴儿、青少年、成人 表2包含类id和类名称 表3存储了可以参加每个课程的多个选择选项。我猜字段应该是id&classID&ageLevelI

我不确定将多个select选项存储到mysql中的最佳方法。最初,我创建了一个以逗号分隔的选定值列表。我已经读到这是一种糟糕的编程实践,并且在尝试找出如何使用逗号分隔的varchar值搜索数据库中的三列时也遇到了困难,例如:1,5,17。似乎最好的做法是创建第三个表,为上面的示例插入3条记录。此表将通过id链接

例如: 表1年龄级别SHAS字段id和年龄级别婴儿、青少年、成人 表2包含类id和类名称 表3存储了可以参加每个课程的多个选择选项。我猜字段应该是id&classID&ageLevelID

我的问题如下: 1.如何有效地将这些数据插入表2和表3? 2.比如说,我该如何将所有这些整合在一起,寻找一个只允许婴儿和青少年上课的人


关联2个表很容易,关联3个表是一个概念上的斗争。另外,在一个字段中存储逗号分隔的值是自找麻烦,对吗?谢谢。

表agelevel ageid unique,agelevel

表类classid唯一,classname

表classesinfo classid、字段名、字段值


有了它,您可以有任何“字段名”,如年龄级别、详细描述、小时数等,然后在fieldvalue中有该字段的值。这允许您的类将无限多个变量附加到单个classid

欢迎来到join的乐趣我了解join的概念…我的问题更多的是,我没有使用两个表和逗号分隔的多个选择,而是使用第三个表。你同意我处理这一多重选择问题的方法吗?我需要两条sql语句来填充表2和表3,还是可以用一条sql语句来完成?fieldname不应该是ageID吗?这会引入ageLevel吗?例如,如果有人提供了一个允许2个年龄级别的类,那么我特别需要使用SQL。是否可以仅使用一条SQL语句将数据插入数据库?另外,当我需要搜索仅供成人使用的课程时,我该如何做?引入第三个表给我带来了一些麻烦。是的,在我上面的示例中,fieldname应该是ageid。一旦你创建了表格,设置了一些不同年龄层次的类,你可以发布更多的细节,这样我们就可以给你一个准确的答案