Co by się stało, gdybyś chciał stworzyć wiele takich rekordów (aby zarejestrować 10 użytkowników, a nie tylko jednego)? Znajduję następujące rozwiązanie (tylko 5 zapytań):
Krok I: Utwórz tabelę tymczasową do przechowywania nowych danych.
CREATE TEMPORARY TABLE tmp (id bigint(20) NOT NULL, ...)...;
Następnie wypełnij tę tabelę wartościami.
INSERT INTO tmp (username, password, bio, homepage) VALUES $ALL_VAL
Tutaj zamiast $ALL_VALCiebie umieść listę wartości: ('test1', 'test1', 'bio1', 'home1'), ..., ('testn', 'testn', 'bion', 'homen')
Krok II: Wyślij dane do tabeli „user”.
INSERT IGNORE INTO users (username, password)
SELECT username, password FROM tmp;
Tutaj można użyć "IGNORE", jeśli pozwolisz niektórym użytkownikom być już w środku. Opcjonalnie możesz użyć UPDATE podobnie jak w kroku III, przed tym krokiem, aby znaleźć użytkowników, którzy są już w środku (i zaznaczyć ich w tabeli tmp). Tutaj zakładamy, że nazwa użytkownika jest zadeklarowana tak, jak PRIMARYw tabeli użytkowników.
Krok III: Zastosuj aktualizację, aby odczytać wszystkie identyfikatory użytkowników od użytkowników do tabeli tmp. TO NIEZBĘDNY KROK.
UPDATE tmp JOIN users ON tmp.username=users.username SET tmp.id=users.id
Krok IV: Utwórz kolejną tabelę, używając identyfikatora odczytu dla użytkowników
INSERT INTO profiles (userid, bio, homepage)
SELECT id, bio, homepage FROM tmp