慕斯王
不,不能在一个MySQL命令中插入多个表。但是,您可以使用事务。BEGIN;INSERT INTO users (username, password)
VALUES('test', 'test');INSERT INTO profiles (userid, bio, homepage)
VALUES(LAST_INSERT_ID(),'Hello world!', 'http://www.stackoverflow.com');COMMIT;看一看LAST_INSERT_ID()若要重用自动增量值,请执行以下操作。编辑:你说“经过这么长时间的努力,它还是不起作用。我不能简单地将刚刚生成的ID放在$var中,并将$var放在所有MySQL命令中吗?"让我详细说明:这里有三种可能的方法:在上面看到的代码中。这一切都是在MySQL中完成的,LAST_INSERT_ID()在第二个语句中,自动递增列的值将自动插入到第一个语句中。不幸的是,当第二个语句本身使用自动增量列在表中插入行时,LAST_INSERT_ID()将被更新为表2,而不是表1。如果之后仍然需要表1,我们将不得不将它存储在一个变量中。这就引出了方法2和3:将库存LAST_INSERT_ID()在MySQL变量中:INSERT ...SELECT LAST_INSERT_ID() INTO @mysql_variable_here;INSERT INTO table2 (@mysql_variable_here, ...);
INSERT INTO table3 (@mysql_variable_here, ...);将库存LAST_INSERT_ID()在php变量(或您选择的任何可以连接到数据库的语言)中:INSERT ...使用您的语言检索LAST_INSERT_ID(),或者在MySQL中执行该文字语句,或者使用php的mysql_insert_id()这样做是为了你INSERT [use your php variable here]警告无论你选择怎样解决这个问题,你都必须决定应该发生什么。如果在查询之间中断执行(例如,数据库服务器崩溃)。如果你能接受“一些人已经完成了,另一些人没有”,那就不要继续读下去。但是,如果您决定“所有查询都完成了,或者没有完成-我不希望某些表中的行与其他表中的行匹配,我总是希望我的数据库表是一致的”,那么您需要在一个事务中包装所有语句。所以我才用BEGIN和COMMIT这里。如果您需要更多信息,请再次评论:)