复选框从存储有逗号分隔字段的mysql表中优化搜索

时间:2013-08-24 10:14:27

标签: php mysql arrays checkbox

我正在基于已检查的复选框值和存储在Mysql数据库表中的匹配值实现对mysql查询的精简搜索。复选框字段如下:

<input type="checkbox" value="1" name="services_search[]" id="services_search[]" /> Service ABC

<input type="checkbox" value="2" name="services_search[]" id="services_search[]" /> Service XYZ

<input type="checkbox" value="3" name="services_search[]" id="services_search[]" /> Service 123 

我有一个带有字段ID,名称和服务的mysql表“users”。字段“服务”具有一个或多个存储的服务值:

|  id  |  name   |  services 
|  1   |  Mark   | 1, 2, 3
|  2   |  Jhon   | 2, 3
|  3   |  Tina   | 1

现在我的问题是如何实现mysql查询以获得基于多个已检查服务的精炼结果。

1 个答案:

答案 0 :(得分:0)

因为一个用户可以拥有多项服务一项服务可以属于多个用户,所以更好的做法是 many-to - 很多 关系表。

您的示例将按此结构:

用户表

id | name
---+-----
1  | Mark
2  | John
3  | Tina

服务表

id | service
---+--------
1  | Normal
2  | Premium
3  | Admin

用户表

user_id | service_id
--------+-----------
1       | 1
1       | 2
1       | 3
2       | 1
2       | 2
3       | 1

其中user_id和service_id具有主表中各个字段的外键。现在它易于维护,不需要字符串操作,并且易于查询。