不,您不能在一个 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 '); 犯罪;
查看 LAST_INSERT_ID 以重用自动增量值。编辑:您说“经过这么长时间试图弄清楚,它仍然不起作用。我不能简单地将刚刚生成的 ID 放入 $var 并将 $var 放入所有 MySQL 命令中吗?”
让我详细说明一下:这里有 3 种可能的方法:
1/ 是你在上面看到的代码。这一切都在 MySQL 中完成,第二个语句中的 LAST_INSERT_ID 将自动成为第一个语句中插入的 autoincrement-column 的值。
不幸的是,当第二条语句本身在具有自增列的表中插入行时,LAST_INSERT_ID 将更新为表 2 的值,而不是表 1。如果您之后仍然需要表 1 的值,我们将不得不存储它在一个变量中。这将我们引向方法 2 和 3:
2/ 将 LAST_INSERT_ID 存储在 MySQL 变量中:
A/ INSERT B/ SELECT LAST_INSERT_ID 进入@mysql_variable_here C/ INSERT INTO table2 (@mysql_variable_here D/ INSERT INTO table3 (@mysql_variable_here ...
3/ 将 LAST_INSERT_ID 存储在 php 变量中(或任何可以连接到数据库的语言,您可以选择):
A/ INSERT B/ 使用您的语言来检索 LAST_INSERT_ID,或者通过在 MySQL 中执行该文字语句,或者使用例如 php 的 mysql_insert_id() 为您执行此操作 C/ INSERT ()