【问题标题】:mySQL: insert values into 2 tables with foreign key relationshipmySQL:将值插入具有外键关系的 2 个表中
【发布时间】:2023-03-31 21:45:01
【问题描述】:

我创建了 2 个具有以下结构的表:

mitarbeiter
==================
maID (PK, AUTO_INCREMENT, NOT NULL)
maAnrede
maName
maVname
maDurchwahl
maEmail
maMobilfunkNr
maKartenanzahl
maFirma

mobilfunkkarten
==============================
mfkID (PK, AUTO_INCREMENT, NOT NULL)
mfkTarif
mfkStatus
mfkKartennr
mfkPin
mfkSuperpin
maID(FK)

现在我希望网络用户在表单字段中输入值。单击“保存”按钮后,数据将保存到相应的2个表中。 我的 mySQL-Query 看起来像这样:

INSERT INTO mitarbeiter,mobilfunkkarten
(maAnrede, maVname, maName, maMobilfunkNr, mfkTarif, maKartenanzahl, mfkStatus, mfkkartennr, mfkPin, mfkSuperpin, maEmail, maFirma) 
VALUES($anrede, $Vorname, $Nachname,.......);

不幸的是,查询不起作用,因为您不能像我的示例中那样在 INSERT 命令之后使用 2 个表。

关于如何解决这个问题的任何解决方案?我只是想不出任何方法来确保用户在表单字段中输入的任何内容都将作为 1 个数据集保存到这 2 个表中,即子表“mobilfunkkarten”中的新数据将与父表 'mitarbeiter' 中的主键编号。

mitarbeiter = 工人 mobilfunkkarten = 手机卡(SIM 卡)

【问题讨论】:

  • 这将需要两次查询,因为您需要从相关行中获取键以插入父行。您可以在事务中执行此操作,这样如果出现故障,您可以回滚插入。
  • 另外,请务必使用带有 mysqli 或 PDO 函数的参数化查询,以避免 SQL 注入并正确处理引号。
  • 请参阅this question,了解如何从 INSERT 中取回主键
  • @SloanThrasher:首先,谢谢。不过,请不要让我们担心 SQL 注入。我正在使用为我完成所有工作的模板引擎。我需要的只是上面提到的问题的 SQL 查询语法。

标签: php mysql sql database insert


【解决方案1】:

首先插入员工。

INSERT INTO mitarbeiter
            (maanrede,
             ...)
            VALUES(?,
                   ...);

然后插入 SIM 卡。使用last_insert_id() 获取为员工记录创建的 ID。

INSERT INTO mobilfunkkarten
            (mfktarif,
             ...,
             maID)
            VALUES (?,
                    ...,
                    last_insert_id());

【讨论】:

  • 这个对我有用。非常感谢!也许您应该在您的帖子中删除/删除不必要的代码,例如“maMobilfunkNr,mfkTarif,....”以将其四舍五入。
猜你喜欢
  • 2016-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-29
  • 1970-01-01
  • 1970-01-01
  • 2015-06-09
相关资源
最近更新 更多