2

大家好,我正在尝试使用 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' 附近使用

我看不出我做错了什么……有人吗?

提前致谢。

4

2 回答 2

1

它不是 SQL 查询,而是一组查询。
PHPmyAdmin 只是拆分您的集合,然后分别执行查询。

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

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

于 2013-02-25T11:23:52.637 回答
0

手册

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

因此,只要使用相同的连接,就不需要将所有查询打包到 SQL 数据库调用中。但是如果你这样做,你需要确保你的数据库库和函数支持这个特性。

于 2013-02-25T12:10:20.697 回答