Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.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_Sql_Arrays_Database_Data Structures - Fatal编程技术网

Php 将数据从阵列发布到数据库

Php 将数据从阵列发布到数据库,php,sql,arrays,database,data-structures,Php,Sql,Arrays,Database,Data Structures,我的数据库中有两个表,一个包含组,一个包含用户。用户甚至可以多次成为这些组的成员 因此,用户包含“id”、“name”、“lastname”、“group”和其他一些不重要的内容。表组只包含一个id和一个组名。这些组是动态的,有时添加组,有时删除组 在前端,人们可以使用带有“选择多个”的表单将自己添加到组中 但我没有比这更进一步的了。我面临两个问题。从数据库收集的数据是在一个数组中,因此将它们放入SQL查询并不简单。(我想把数组中的所有信息放在一个用“,”分隔的变量中)另一方面,也许这种表格格式

我的数据库中有两个表,一个包含组,一个包含用户。用户甚至可以多次成为这些组的成员

因此,用户包含“id”、“name”、“lastname”、“group”和其他一些不重要的内容。表组只包含一个id和一个组名。这些组是动态的,有时添加组,有时删除组

在前端,人们可以使用带有“选择多个”的表单将自己添加到组中

但我没有比这更进一步的了。我面临两个问题。从数据库收集的数据是在一个数组中,因此将它们放入SQL查询并不简单。(我想把数组中的所有信息放在一个用“,”分隔的变量中)另一方面,也许这种表格格式不是最好的方法

所以我要问你们。将表结构更改为什么更好? 如何将数组组合成一个变量,以便将它们放入数据库中(以“,”分隔)

编辑!:根据安迪·霍尔的建议,我创建了一个新表。 具有id、WERKGREOEP_id和用户id的WERKGREOEP_用户

这就是我的选择

<select id="testwerkgroep" name="testwerkgroep[]" multiple>
 <option value="">geen werkgroep</option>
 <option value="1">werkgroep 1</option>
 <option value="2">werkgroep 2</option>
</select>

吉恩·沃克格洛普
werkgroep 1
werkgroep 2

现在我面临着从数据库获取数据的问题。例如,我希望所有用户(名称)及其组(名称)

看起来您的用户和组表具有多对多关系。“许多用户可以是许多组的一部分”

不必解析与中间表的多对多关系,您当然可以在
users.group
字段中使用逗号分隔的值字符串。您可以通过对组ID数组使用
内爆()
函数来实现这一点:

$commaSeparatedGroupIdString=内爆($groupIdArray)

从数据库中检索时,可以将它们分解回数组:

$groupIdArray=explode($commaSeparatedGroupIdString,“,”)

第二种方法(我想说,更好的)是解决与中间表的多对多关系。此表的名称类似于
组分配
。一个
用户
可能有多个
组分配
,一个
可能有多个
组分配

组分配表的结构为:

id
主键

user\u id
外键指向
users.id
字段

group\u id
指向
groups.id
字段的外键


每当用户希望将自己分配到某个组时,他们都会进行提交,并且您的应用程序将在
group\u assignments
表中创建一条新记录,其中包含用户的ID和他们提交给自己分配的组的ID。然后,为用户检索组分配信息需要在SQL中使用
JOIN
,以便为用户获取所有相关的
group\u分配
记录。删除分配与删除
组分配
表中的相应记录一样简单。

看起来您的用户和组表具有多对多关系。“许多用户可以是许多组的一部分”

不必解析与中间表的多对多关系,您当然可以在
users.group
字段中使用逗号分隔的值字符串。您可以通过对组ID数组使用
内爆()
函数来实现这一点:

$commaSeparatedGroupIdString=内爆($groupIdArray)

从数据库中检索时,可以将它们分解回数组:

$groupIdArray=explode($commaSeparatedGroupIdString,“,”)

第二种方法(我想说,更好的)是解决与中间表的多对多关系。此表的名称类似于
组分配
。一个
用户
可能有多个
组分配
,一个
可能有多个
组分配

组分配表的结构为:

id
主键

user\u id
外键指向
users.id
字段

group\u id
指向
groups.id
字段的外键


每当用户希望将自己分配到某个组时,他们都会进行提交,并且您的应用程序将在
group\u assignments
表中创建一条新记录,其中包含用户的ID和他们提交给自己分配的组的ID。然后,为用户检索组分配信息需要在SQL中使用
JOIN
,以便为用户获取所有相关的
group\u分配
记录。删除作业与删除
组作业
表中的相应记录一样简单。

您能用您尝试过的内容编辑您的帖子吗?
此表格式不是最好的方式
是正确的。回答
如何将数组组合成一个变量,以便将它们放入数据库中(以“,”分隔)
虽然可能是
内爆
。您能用您尝试过的内容编辑您的帖子吗?
此表格格式不是最好的方式
是正确的。要回答
如何将数组组合成一个变量,以便将它们放入数据库中(以“,”分隔)
,尽管这将是
内爆
。好的,我将稍后尝试更好的选项。因为涉及三个表,所以获取数据需要双重连接?由于数据是以数组的形式提供的,如果我正确地理解了,我需要在将单独的记录添加到中间表时执行foreach循环?是的,需要双连接才能获得与您的组关联的
记录