LAST_INSERT_ID在我的情况下不起作用

时间:2014-05-02 12:58:16

标签: mysql sql database

$stmt2 = $db->prepare("INSERT INTO 
                      usertabbrige(`tabId`,`uId`) 
                      VALUES 
                      ((LAST_INSERT_ID()),$userId)");

此查询有什么问题?它包含在我的第一个stmt中,它会将值插入到其他表中的uId(PK)中。 usertabbrige表包含一个字段uId,它是一个FK。

1 个答案:

答案 0 :(得分:0)

请勿在查询中使用LAST_INSERT_ID()。你不知道哪个插入语句在当前会话中是最后一个。您可以插入一个表格,如果您在其他查询中使用LAST_INSERT_ID(),则实际上并不知道LAST_INSERT_ID()来自何处。

我可以看到你正在使用PDO。执行插入查询后,保存id:

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

在下一个准备好的陈述中使用它

$stmt2 = $db->prepare("INSERT INTO 
                  usertabbrige(`tabId`,`uId`) 
                  VALUES 
                  ($lastInsertedTabId ,$userId)");