首页 > 解决方案 > 使用第一个查询的 id 在 2 个表中插入数据

问题描述

我有 2 张桌子usersaddresses. 用户从一个表单中输入所有数据,然后将所有数据插入数据库。

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 处理?

如果可能的话,有没有更好更准确的方法呢?

标签: phpmysqlpdo

解决方案


推荐阅读