PHP/MySQL语法插入到多个表(多对多结构)


PHP/MySQL syntax to insert into multiple tables (many-to-many structure)

我正试图将数据从一个表单插入到多个MySQL表中(使用MySQL语法,尽管我将在某些时候迁移应用程序MYSQLi -这可能现在不相关,但我认为我会说它来阻止"你应该在MYSQLi中这样做"评论,不可避免地跟随-我知道我应该,我将……很快……但由于一些我无法控制的原因,我还不能,我们仍然需要这个工作)。

本质上,我正在插入一个"多对多"表结构(即,实例可以是许多类别的一部分,类别可以包含许多实例)。主表Instances包含所有主要数据(在本例中是地图上的位置,例如"Acme Cafe"、"Lakeside Picnic Area"等);另一个表Categories包含instances表中所有位置的所有可能类别-例如,'Cafe', 'Pub', 'View Point'等;和一个连接表Instance_Categories,将Instances表中的位置与Categories表中的类别连接起来。

PHP表单有以下字段:

  • Reference(一个随机生成的9位标识符,用于在Instance_Categories表中识别具有多个类别的实例)
  • Name(文本框)
  • Address(文本框)
  • Phone(文本框)
  • 每个类别的Tick-box字段(其中8个)。

Instances表有以下列

  • ID(表中唯一的)
  • Reference(见上面的表格输入)
  • Name
  • Address
  • Phone

Categories表有以下列

  • ID(表唯一)
  • Category (varchar)
  • Category_Ref(用于标识连接Instances_Categories表中的引用的数字)

Instances_Categories表有以下列:

  • ID(表唯一)
  • Instance_Ref(来自上面的表单输入)
  • Category_Ref(与上表Categories相关)

我如何制定INSERT语句,以便将数据插入到数据库中?我可以为每个表制定一个插入命令,然后从同一个"提交"按钮一个接一个地运行它们吗?如何使用insert命令根据选择的类别复选框的数量动态地向Instances_Categories表中插入更多行?我的头发都要掉下来了!

如果你想用一个查询插入多个表,你不能。

您可以使用事务,但只需运行多个查询并结束一天。