Php 将数据从阵列发布到数据库
我的数据库中有两个表,一个包含组,一个包含用户。用户甚至可以多次成为这些组的成员 因此,用户包含“id”、“name”、“lastname”、“group”和其他一些不重要的内容。表组只包含一个id和一个组名。这些组是动态的,有时添加组,有时删除组 在前端,人们可以使用带有“选择多个”的表单将自己添加到组中 但我没有比这更进一步的了。我面临两个问题。从数据库收集的数据是在一个数组中,因此将它们放入SQL查询并不简单。(我想把数组中的所有信息放在一个用“,”分隔的变量中)另一方面,也许这种表格格式不是最好的方法 所以我要问你们。将表结构更改为什么更好? 如何将数组组合成一个变量,以便将它们放入数据库中(以“,”分隔) 编辑!:根据安迪·霍尔的建议,我创建了一个新表。 具有id、WERKGREOEP_id和用户id的WERKGREOEP_用户 这就是我的选择Php 将数据从阵列发布到数据库,php,sql,arrays,database,data-structures,Php,Sql,Arrays,Database,Data Structures,我的数据库中有两个表,一个包含组,一个包含用户。用户甚至可以多次成为这些组的成员 因此,用户包含“id”、“name”、“lastname”、“group”和其他一些不重要的内容。表组只包含一个id和一个组名。这些组是动态的,有时添加组,有时删除组 在前端,人们可以使用带有“选择多个”的表单将自己添加到组中 但我没有比这更进一步的了。我面临两个问题。从数据库收集的数据是在一个数组中,因此将它们放入SQL查询并不简单。(我想把数组中的所有信息放在一个用“,”分隔的变量中)另一方面,也许这种表格格式
<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循环?是的,需要双连接才能获得与您的组关联的组
记录