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.

Était-ce utile?

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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top