PHP MySQL INSERT échoue en raison de contrainte unique
-
02-10-2019 - |
Question
Sur insert J'attrapais la contrainte unique mysql_errno () 1062.
Cela fonctionne bien, mais je veux trouver la ligne existante de rétablir ou de le modifier.
Est il y a méthode pour obtenir l'identifiant de ligne sur insert échouent? J'ai essayé mysql_insert_id () mais réalisé que ne reviendrait la ligne que je suis l'insertion (ou n'a pas pu insérer) donc, je reçois 0.
Yat-il pas d'autre choix que d'émettre une autre mysql_query et effectuez simplement une sélection sur la valeur en double?
Je veux juste vous assurer qu'il n'y a pas moyen de mieux, plus rapide, plus économique de le faire.
La solution
Si vous tentez d'insérer une ligne si nouvelle ou mise à jour des valeurs existantes puis INSERT ... Duplicate KEY UPDATE Syntaxe s'il y a des contraintes liées comme REPLACE INTO SUPPRIME puis INSERT.
Autres conseils
Il faudrait vérifier la table des clés « uniques » (SHOW CREATE TABLE
leur liste de tous), puis interroger la table pour les valeurs associées à la requête d'insertion vous aviez essayé. Donc, si vous insérons champs que A, B, C, D et B, C ont la clé unique sur eux, alors:
SELECT id, B, C FROM table WHERE B=$B and C=$C;