いいえ、1 つの MySQL コマンドで複数のテーブルに挿入することはできません。ただし、トランザクションは使用できます。
BEGIN INSERT INTO ユーザー (ユーザー名、パスワード) VALUES('test', 'test') INSERT INTO プロファイル (ユーザー ID、略歴、ホームページ) VALUES(LAST_INSERT_ID(),'Hello world!', ' http://www.stackoverflow. com '); 専念;
LAST_INSERT_ID を見て、自動インクリメント値を再利用してください。編集: あなたは、「何度もそれを理解しようとしても、まだ機能しません。生成されたばかりの ID を $var に入れて、その $var をすべての MySQL コマンドに入れることはできませんか?」と言いました。
詳しく説明しましょう: ここには 3 つの方法があります。
1/ 上記のコードです。これはすべて MySQL で行われ、2 番目のステートメントの LAST_INSERT_ID は、最初のステートメントで挿入された autoincrement-column の値になります。
残念ながら、2 番目のステートメント自体が自動インクリメント列を含むテーブルに行を挿入すると、LAST_INSERT_ID はテーブル 1 ではなくテーブル 2 の ID に更新されます。後でテーブル 1 の ID が必要な場合は、保存する必要があります。それを変数に入れます。これにより、方法 2 と 3 に進みます。
2/ MySQL 変数に LAST_INSERT_ID を格納します。
A/ INSERT B/ SELECT LAST_INSERT_ID into @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/ 言語を使用して、MySQL でそのリテラル ステートメントを実行するか、たとえば php の mysql_insert_id() を使用して LAST_INSERT_ID を取得します C/ INSERT ()