Mysql 最后插入的ID在我的情况下不起作用

Mysql 最后插入的ID在我的情况下不起作用,mysql,sql,database,Mysql,Sql,Database,这个问题有什么问题吗?它是在我的第一个stmt中包装的,它将在另一个表的uidpk中插入一个值。usertabbrige表包含一个FK字段uId。不要在查询中使用最后一个插入ID。您不知道当前会话中的最后一条insert语句。您可以插入到一个表中,如果在另一个查询中使用LAST\u insert\u ID,您实际上不知道LAST\u insert\u ID来自何处 正如我所看到的,您正在使用PDO。执行插入查询后,保存id: $stmt2 = $db->prepare("INSERT IN

这个问题有什么问题吗?它是在我的第一个stmt中包装的,它将在另一个表的uidpk中插入一个值。usertabbrige表包含一个FK字段uId。

不要在查询中使用最后一个插入ID。您不知道当前会话中的最后一条insert语句。您可以插入到一个表中,如果在另一个查询中使用LAST\u insert\u ID,您实际上不知道LAST\u insert\u ID来自何处

正如我所看到的,您正在使用PDO。执行插入查询后,保存id:

$stmt2 = $db->prepare("INSERT INTO 
                      usertabbrige(`tabId`,`uId`) 
                      VALUES 
                      ((LAST_INSERT_ID()),$userId)");
在下一份准备好的声明中使用它

$db->query("INSERT INTO ...");
$lastInsertedTabId = $db->lastInsertId;

如果发生错误,您是否收到错误消息?你得到的结果是否与你预期的不同?请提供更多信息。另外,永远不要将用于插值的变量放入SQL,请使用prepare?作为占位符,稍后执行execute$userId。使用mysql\u insert\u id而不是上次的\u insert\u id如何?我使用了mysql insert id,但它的值为0。这很奇怪,前面的查询确实运行过。但我在一个文件中运行这两个查询。无法添加或更新子行:外键约束失败fyp.usertabbrige,约束usertabbrige\u ibfk\u 2外键tabId REFERENCES选项卡tabId ON DELETE CASCADE ON update CASCADE I try echo$stmt->error我发现无法添加或更新子行:外键约束失败fyp.usertabbrige,约束usertabbrige_ibfk_2外键tabId REFERENCES tabId ON DELETE CASCADE ON UPDATE CASCADE您应该为这两个选项卡提供sql模式,usertabbrige table我尝试使用GUI,它确实插入了。该死的。
$stmt2 = $db->prepare("INSERT INTO 
                  usertabbrige(`tabId`,`uId`) 
                  VALUES 
                  ($lastInsertedTabId ,$userId)");