php - 使用第一个查询的 id 在 2 个表中插入数据
问题描述
我有 2 张桌子users
和addresses
. 用户从一个表单中输入所有数据,然后将所有数据插入数据库。
2 个表结构如下所示:
`users`
+-------------------+
| id | name | email |
|--------------------
| 1 | jon | j@j.co|
+-------------------+
`addresses`
+-----------------------------+
| id | add1 | add2 | user_id |
|-----------------------------|
| 1 | NY | Vegas | 1 |
+-----------------------------+
users.id
如您所见,使用和的两个表之间存在关系addresses.user_id
。
插入数据的 PHP 代码:
//Insert for 1st table
$sql = "INSERT INTO users (name, email) VALUES (?,?)";
$stmt= $pdo->prepare($sql);
$stmt->execute([$name, $email]);
//Last inserted id
$id = $pdo->lastInsertId();
//Insert for 2nd table
$sql = "INSERT INTO addresses(add1, add2, user_id) VALUES (?,?,?)";
$stmt= $pdo->prepare($sql);
$stmt->execute([$add1, $add2, $id]);
在这种情况下,假设有 2 个用户同时填写表单。一个带有 id 2
,另一个带有 id 3
。
所以用户表会是这样的:
+-------------------+
| id | name | email |
|--------------------
| 1 | jon | j@j.co|
|--------------------
| 2 | mark | m@m.co|
|--------------------
| 3 | sam | s@s.co|
+-------------------+
因此,当它到达这一行时 $id = $pdo->lastInsertId();
,id 将是3
,如果发生这种情况,具有 id 的用户3
将在表中有 2 行addresses
,对吗?
`addresses`
+-----------------------------+
| id | add1 | add2 | user_id |
|-----------------------------|
| 1 | NY | Vegas | 1 |
|-----------------------------|
| 2 | UK | UK | 3 |
|-----------------------------|
| 3 | CA | CA | 3 |
+-----------------------------+
最后插入的 id 可能是针对不同的用户的吗?或者 MYSQL 处理?
如果可能的话,有没有更好更准确的方法呢?
解决方案
推荐阅读
- hash - Redis Timeseries 数据 - 哈希和排序集中的数百万条记录
- node.js - 为什么 docker 工作目录不受影响
- javascript - MVC 中的复选框绑定
- swift - 在 iOS 上使用 Google ML 对象检测和在图像上绘制边界框
- csv - 使用 Excel 打开 csv 文件时保留文本
- javascript - 猫鼬删除文档中的数组元素
- r - 如何选择组中的第一个值 - 不过滤?
- wordpress - 使自定义字段的行为与 WP 注册电子邮件字段相同
- ruby-on-rails - rails 模型复杂关联解释
- c# - SQL Server存储过程问题通过C#