Que se passerait-il si vous souhaitiez créer de nombreux enregistrements de ce type (pour enregistrer 10 utilisateurs, pas un seul)? Je trouve la solution suivante (seulement 5 requêtes):
Étape I: Créez une table temporaire pour stocker de nouvelles données.
CREATE TEMPORARY TABLE tmp (id bigint(20) NOT NULL, ...)...;
Ensuite, remplissez ce tableau avec des valeurs.
INSERT INTO tmp (username, password, bio, homepage) VALUES $ALL_VAL
Ici, au lieu de $ALL_VAL
vous placez une liste de valeurs: ('test1', 'test1', 'bio1', 'home1'), ..., ('testn', 'testn', 'bion', 'homen')
Étape II: envoyer les données à la table «utilisateur».
INSERT IGNORE INTO users (username, password)
SELECT username, password FROM tmp;
Ici, "IGNORE" peut être utilisé, si vous autorisez déjà certains utilisateurs à être à l'intérieur. En option, vous pouvez utiliser UPDATE similaire à l'étape III, avant cette étape, pour trouver les utilisateurs déjà à l'intérieur (et les marquer dans la table tmp). Ici, nous supposons que le nom d'utilisateur est déclaré comme PRIMARY
dans la table des utilisateurs.
Étape III: appliquez la mise à jour pour lire tous les identifiants d'utilisateurs des utilisateurs à la table tmp. CECI EST UNE ÉTAPE ESSENTIELLE.
UPDATE tmp JOIN users ON tmp.username=users.username SET tmp.id=users.id
Étape IV: créer une autre table en utilisant l'ID de lecture pour les utilisateurs
INSERT INTO profiles (userid, bio, homepage)
SELECT id, bio, homepage FROM tmp