【问题标题】:Finding auto_increment value for multiple insert queries查找多个插入查询的 auto_increment 值
【发布时间】:2014-08-05 21:38:29
【问题描述】:

我有一个表格可以输入学生的姓名和分数。


我有两张桌子:

学生

student_id | student_name
         1 | John
         2 | Doe

标记

student_id | mark
         1 | 80
         2 | 90

Student Name 字段具有自动完成功能,可检查 student 表是否学生已存在。

现在,如果我在表单的 Student Name 字段中输入 J,它会显示 John。如果我单击 John,然后在 Mark 字段中输入一个标记(例如 50)并提交表单,则 student 表保持不变,而 ma​​rks 表插入新行 (1 | 50),其中 1 是所选学生的 student_id(在本例中为 John 的 id)。

现在,如果我在 Student Name 字段中输入一个新名称(例如 Rae),并在 Mark 字段中输入一些标记(例如 75),则两个表应该在表单提交时插入一个新行。即,student 表现在应该有一个新行 (3 | Rae),ma​​rks 表应该有一个新行 (3 | 75)

我的问题是,由于 student_id 是来自 student 的自动增量值,因此 ma​​rks 中的 student_id 字段表在输入新学生(在本例中为 Rae)时获得值 0,它将行插入为 (0 | 75) 而不是我的要求 (3 | 75)。

据我所知,mysqli_insert_id() 可以在这里使用,但我一次使用了三个插入语句。上面提到的两个插入查询是第二个和第三个。使用 mysqli_insert_id() 命令将第一次插入的 auto_increment 值用于其他目的。

【问题讨论】:

  • 如果不能使用last_insert_id,只需按名称查询元素并获取id

标签: php mysql sql database auto-increment


【解决方案1】:

在查询中使用 LAST_INSERT_ID() 来获取新 ID。例如:

INSERT INTO student (student_name) VALUES ('John');
INSERT INTO marks (student_id, mark) VALUES (LAST_INSERT_ID(), 74);

【讨论】:

    猜你喜欢
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 2015-07-28
    • 2015-10-15
    • 1970-01-01
    • 2013-08-13
    相关资源
    最近更新 更多