Нет, вы не можете вставить в несколько таблиц в одной команде 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 () (
dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html) для повторного использования значений автоинкремента.
Есть 3 возможных способа: в коде, который вы видите выше. Это делает все это в 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, либо используя, например, mysql_insert_id () php, который делает это для вас, INSERT [используйте вашу переменную php здесь].