Що буде, якщо ви хочете створити багато таких записів (зареєструвати 10 користувачів, а не одного)? Я знаходжу таке рішення (всього 5 запитів):
Крок I: Створіть тимчасову таблицю для зберігання нових даних.
CREATE TEMPORARY TABLE tmp (id bigint(20) NOT NULL, ...)...;
Далі заповніть цю таблицю значеннями.
INSERT INTO tmp (username, password, bio, homepage) VALUES $ALL_VAL
Тут замість $ALL_VALвас розмістіть список значень: ('test1', 'test1', 'bio1', 'home1'), ..., ('testn', 'testn', 'bion', 'homen')
Крок II: Надішліть дані до таблиці "користувач".
INSERT IGNORE INTO users (username, password)
SELECT username, password FROM tmp;
Тут "IGNORE" можна використовувати, якщо ви дозволите деяким користувачам вже бути всередині. Додатково ви можете використовувати UPDATE, подібний до етапу III, до цього кроку, щоб знайти користувачів, які вже є всередині (та позначте їх у таблиці tmp). Тут ми припускаємо, що ім’я користувача задекларовано як PRIMARYу таблиці користувачів.
Крок III: Застосуйте оновлення, щоб прочитати всі ідентифікатори користувачів від користувачів до таблиці tmp. ЦЕ СУЧАСНИЙ КРОК.
UPDATE tmp JOIN users ON tmp.username=users.username SET tmp.id=users.id
Крок IV: Створіть іншу таблицю, використовуючи ідентифікатор читання для користувачів
INSERT INTO profiles (userid, bio, homepage)
SELECT id, bio, homepage FROM tmp