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

Php 复选框从存储有逗号分隔字段的mysql表中优化搜索,php,mysql,arrays,checkbox,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[]" /> Serv

我正在基于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 

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

因为一个用户可以拥有多个服务并且一个服务可以属于多个用户,所以更好的做法是使用多对多关系表

您的示例的结构如下:

用户表 服务表 向用户提供的表格
其中,user_id和service_id具有主表中相应字段的外键。现在,它易于维护,不需要字符串操作,并且易于查询

我认为您应该先修改数据库模式。如果多个服务可以属于一个用户,那么可能的服务应该位于一个单独的表中,其中一个表连接这两个服务。
|  id  |  name   |  services 
|  1   |  Mark   | 1, 2, 3
|  2   |  Jhon   | 2, 3
|  3   |  Tina   | 1
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