Comment récupérer l'ID d'une ligne après INSERT/UPDATE à l'aide de MySQL ON DUPLICATE KEY
Insérer ou mettre à jour des données à l'aide de ON DUPLICATE KEY La clause dans MySQL peut être un moyen pratique de gérer les erreurs de clé en double. Cependant, il peut être difficile d'obtenir l'ID de la ligne affectée après l'opération.
Une hypothèse courante est que la fonction LAST_INSERT_ID() renvoie uniquement l'ID des lignes nouvellement insérées. Cependant, dans un scénario ON DUPLICATE KEY, il peut également renvoyer l'ID mis à jour si une ligne a été modifiée.
La solution : LAST_INSERT_ID(expr)
Pour créer LAST_INSERT_ID () significatif à la fois pour les insertions et les mises à jour, MySQL propose la solution de contournement suivante :
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE>
Dans cet exemple, la colonne id est supposée être la clé primaire AUTO_INCREMENT. En attribuant LAST_INSERT_ID(id) à la colonne id lors de la mise à jour, la fonction renvoie l'ID mis à jour.
Récupération du dernier ID d'insertion/mise à jour
Une fois la solution de contournement appliquée place, vous pouvez utiliser la fonction LAST_INSERT_ID() pour récupérer l'ID de la ligne qui a été insérée ou mis à jour :
Copier après la connexion
Cette approche vous permet de récupérer l'ID de la ligne affectée par l'opération INSERT/UPDATE sans avoir besoin d'exécuter une requête distincte pour le récupérer.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!