使用多个插入和多个LAST_INSERT_ID()的Sql Query无法正常工作

时间:2013-02-25 11:21:07

标签: php mysql last-insert-id

大家好,我正在努力存储问题&使用1个sql查询在2个表中的答案:

INSERT INTO questions ( question, level_ID ) VALUES ( 'hello', '1'); INSERT INTO answers (questions_ID, answer, ok) VALUES (LAST_INSERT_ID(),'doei',0), (LAST_INSERT_ID(),'ciao',1); 

如果我在SQL框中执行PHPMyAdmin中的代码,它可以正常工作,但如果我在我的PHP代码生成脚本中执行它,则会返回以下错误:

您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在第2行“INSERT INTO answers(questions_ID,answer,ok)VALUES(LAST_INSERT_ID(),'doei',0''附近使用正确的语法

我看不出我做错了什么......任何人?

提前致谢。

2 个答案:

答案 0 :(得分:1)

这不是SQL查询,而是查询集 PHPmyAdmin只是拆分您的集合,然后单独执行查询。

所以你必须这样做 一个接一个地运行它们。

不要改变任何东西。不需要额外的变量或其他 只需在两个单独的连续呼叫中一个接一个地运行相同的查询 就是这样。

答案 1 :(得分:0)

来自the manual

  

生成的ID在服务器上维护   每个连接基础。这意味着返回的值   给定客户端的函数是生成的第一个AUTO_INCREMENT值   对于影响AUTO_INCREMENT列的最新语句   客户。此值不受其他客户端的影响,即使它们也是如此   生成自己的AUTO_INCREMENT值。此行为可确保   每个客户端都可以检索自己的ID而无需担心   其他客户的活动,无需锁或   交易。

只要您使用相同的连接,就不需要将所有查询打包到SQL数据库中。但是,如果您想要这样做,您需要确保您的数据库库和函数支持该功能。