php - mySQL:将值插入具有外键关系的 2 个表中
问题描述
我创建了 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 查询看起来像这样:
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 卡)
解决方案
首先插入员工。
INSERT INTO mitarbeiter
(maanrede,
...)
VALUES(?,
...);
然后插入 SIM 卡。用于last_insert_id()
获取为员工记录创建的 ID。
INSERT INTO mobilfunkkarten
(mfktarif,
...,
maID)
VALUES (?,
...,
last_insert_id());
推荐阅读
- java - 在休眠中使用 bean 验证
- erlang - 如何将输入作为元组并将其存储在 Erlang 的变量中?
- firebase - Kotlin Firebase:无法将 java.lang.String 类型的对象转换为 com.example.Model.perizinan 类型
- wcf - 将连接的 Web 服务 WCF 引用添加到 .Net Core API 时出错
- r - R基于参考数据集创建虚拟数据集
- arrays - 如何在二维数组上使用 v-for
- c# - 是否有理由避免包含 System.Net.Http?
- outlook - 在 Outlook 的阅读窗格中直接显示投票结果
- java - 在 GCP 实例中下载或构建 maven 项目的方法是什么?
- laravel - Laravel Valet 站点上的端口 80 上的连接被拒绝