Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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,我有两个表jewelryj_id、j_name、Description和stylestyle_id、style_name、image每个表与另一个表有多对多关系,因为一个珠宝产品可以有多个样式,并且有更多相同样式的产品,所以关系是多对多的 现在我的问题是如何关联这些表,即我想在珠宝表中插入一条记录,一个珠宝产品应该有多种样式 在珠宝html页面上,我想将样式放入从样式表动态填充的多选下拉列表中,如果用户想要为同一产品选择两种样式,他们可以。我建议使用4个表格,3个表格用于珠宝和样式,第四个表格用

我有两个表jewelryj_id、j_name、Description和stylestyle_id、style_name、image每个表与另一个表有多对多关系,因为一个珠宝产品可以有多个样式,并且有更多相同样式的产品,所以关系是多对多的

现在我的问题是如何关联这些表,即我想在珠宝表中插入一条记录,一个珠宝产品应该有多种样式


在珠宝html页面上,我想将样式放入从样式表动态填充的多选下拉列表中,如果用户想要为同一产品选择两种样式,他们可以。

我建议使用4个表格,3个表格用于珠宝和样式,第四个表格用于订单

珠宝:jid PKEY,jname,描述

样式:sid PKEY,sname,描述

产品:pid PKEY、sidFKEY、jidFKEY-一款产品定义了风格和kewellery的独特组合

订单:oidPKEY、pidFKEY、其他详细信息名称、地址等

对于每个珠宝,使用product表恢复关联的样式,并填充html页面上的字段。
对于每个订单,存储产品id,它唯一地标识珠宝和款式。

不确定这是否是数据库设计问题。对我来说,这更像是一个编程问题,在这种情况下,了解您使用的编程语言和数据库会很有帮助

无论如何,这里有一些伪代码,我认为这是你要问的

Add one row in table jewelry
Store the new jewelry.j_id to a variable @jid

for each @StyleID in SelectedStyleList
begin
  Add one row to table jewelry_style 
   set jewelry_style.j_id=@jid, jewelry_style.style_id = @StyleID
end

您的问题不是为这种多对多关系设计数据库,而是在创建新珠宝/样式对象及其关系时的插入策略


在这种情况下,您的策略必须是插入主数据的事务,然后再相互关联。在中止的情况下,您可以回滚事务,并删除您创建的所有内容。只要您在交易中且隔离级别正确,没有人会看到临时创建的数据

我不需要订单表,因此如果我有上述三个表,那么我如何将数据插入第三个表中,因为在珠宝页面上有样式下拉列表和添加新闻样式按钮,如果我想从下拉列表或想要插入新样式,所以我单击“添加新样式”按钮,它会转到“新建”页面,在该页面中我可以添加新样式,然后返回“珠宝”页面,填写其他字段以及我所需的样式并添加。我没有得到的一点是,数据被插入到两个表中,相关的键如何插入到第三个表中,这不是答案。这应该是一个comment.vfurst。那是正确的,除了一件事。我的非SQL没有事务。它们甚至没有数组。他们必须逐行检查每一行。您应该修改您的问题以反映以下评论。那个么我怎样才能将数据插入第三个表中呢?若这个答案对你们有效,那个么请接受它