Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查表中是否存在逗号分隔的值_Php_Mysql - Fatal编程技术网

Php 检查表中是否存在逗号分隔的值

Php 检查表中是否存在逗号分隔的值,php,mysql,Php,Mysql,我有一张桌子:用户组 id | group_id | user_ids ---|----------|--------- 1 | 1 | 3 2 | 1 | 2 3 | 3 | 2 4 | 2 | 3 5 | 2 | 4 6 | 2 | 2 条件是用户ID只能插入一次。但在上述情况下,它是为多个组id插入的 我使用此查询在foreach循环中插入users\u id字段: 将值(2,3)插入用户组(

我有一张桌子:用户组

id | group_id | user_ids
---|----------|---------
1  |   1      | 3
2  |   1      | 2
3  |   3      | 2
4  |   2      | 3
5  |   2      | 4
6  |   2      | 2
条件是用户ID只能插入一次。但在上述情况下,它是为多个组id插入的

我使用此查询在foreach循环中插入users\u id字段: 将值(2,3)插入用户组(组id,用户id)

如何防止插入重复的用户ID


有更好的查询吗?

是的,有更好的方法解决这个问题,但解决方案并不意味着查询

您应该创建一个名为
user\u id
的新列,而不是
user\u id
列,并添加如下数据:

id | group_id | user_id
1  |   1      | 3
2  |   1      | 4
3  |   2      | 3
4  |   2      | 4
5  |   2      | 2
6  |   3      | 2
7  |   3      | 3
8  |   3      | 4

这称为
多对多
关系,使一切变得更容易。之后,您只需加入表

是的,有更好的方法解决这个问题,但解决方案并不意味着查询

您应该创建一个名为
user\u id
的新列,而不是
user\u id
列,并添加如下数据:

id | group_id | user_id
1  |   1      | 3
2  |   1      | 4
3  |   2      | 3
4  |   2      | 4
5  |   2      | 2
6  |   3      | 2
7  |   3      | 3
8  |   3      | 4

这称为
多对多
关系,使一切变得更容易。之后,您只需加入表

我认为您应该首先在只希望具有唯一值的列上创建唯一索引。在这种情况下,它将是
用户ID
列。

我认为您应该首先在只希望具有唯一值的列上创建唯一索引。在这种情况下,它将是
用户id
列。

为什么不从规范化数据库开始,这样就没有CSV id列?您应该重新考虑您的模式,使用关系而不是逗号分隔的字符串。这不是您使用关系数据库的方式。您还记得您询问时关于规范化数据库的评论吗?如果你遵循了这个建议,那么你就不会遇到所有这些问题了!谢谢你的建议,马克。我相应地改变了程序。但是现在如何删除重复的值项为什么不从规范化数据库开始,这样就没有CSV id列呢?您应该重新考虑您的模式,使用关系而不是逗号分隔的字符串。这不是您使用关系数据库的方式。您还记得您询问时关于规范化数据库的评论吗?如果你遵循了这个建议,那么你就不会遇到所有这些问题了!谢谢你的建议,马克。我相应地改变了程序。但是现在该怎么做才能删除重复的值呢?我已经根据你的建议编辑了我的问题。请回答我的疑问。我已经根据你的建议编辑了我的问题。请回答我的疑问。