Apa yang akan terjadi, jika Anda ingin membuat banyak catatan seperti itu (untuk mendaftarkan 10 pengguna, bukan hanya satu)? Saya menemukan solusi berikut (hanya 5 kueri):
Langkah I: Buat tabel sementara untuk menyimpan data baru.
CREATE TEMPORARY TABLE tmp (id bigint(20) NOT NULL, ...)...;
Selanjutnya, isi tabel ini dengan nilai.
INSERT INTO tmp (username, password, bio, homepage) VALUES $ALL_VAL
Di sini, alih-alih $ALL_VAL
Anda menempatkan daftar nilai: ('test1', 'test1', 'bio1', 'home1'), ..., ('testn', 'testn', 'bion', 'homen')
Langkah II: Kirim data ke tabel 'pengguna'.
INSERT IGNORE INTO users (username, password)
SELECT username, password FROM tmp;
Di sini, "ABAIKAN" dapat digunakan, jika Anda mengizinkan beberapa pengguna sudah berada di dalam. Opsional Anda dapat menggunakan UPDATE yang mirip dengan langkah III, sebelum langkah ini, untuk menemukan pengguna yang sudah ada di dalamnya (dan tandai di tabel tmp). Disini kita suppouse, username tersebut dideklarasikan seperti PRIMARY
pada tabel users.
Langkah III: Terapkan pembaruan untuk membaca semua id pengguna dari pengguna ke tabel tmp. INI ADALAH LANGKAH PENTING.
UPDATE tmp JOIN users ON tmp.username=users.username SET tmp.id=users.id
Langkah IV: Buat tabel lain, menggunakan id baca untuk pengguna
INSERT INTO profiles (userid, bio, homepage)
SELECT id, bio, homepage FROM tmp