duplicate entry for key sur une requete UPDATE

duplicate entry for key sur une requete UPDATE - SQL/NoSQL - Programmation

Marsh Posté le 17-07-2006 à 10:33:35    

Bon voila, je sais pas trop si ca concerne php ou mysql (a mon avis c'est plutôt lui m'enfin...)
J'ai une table qui correspond a une liste de materiel informatique, chacun ayant une id unique (mais pas auto incrementée) et des infos comme le proc, la ram, etc... (c'est pour un inventaire).
L'ajout fonctionne sans probleme, mais quand je veux faire un update de la table (pour modifier un materiel donc), j'ai une erreur Duplicate entry 'x' for key 1
où x est l'id unique de mon materiel, qui n'a pas été modifiée mais qui est quand même incluse dans la requete

Code :
  1. mysql_query("UPDATE materiel_ecran SET IdEcran='$idecran', EFournisseur='$fournisseur', EMarque='$marque', EModele='$modele', EType='$type', ETaille='$taille', ENumSerie='$numserie', EDateEntree='$dateentree', EDateSortie='$datesortie', EDateFinGarantie='$datefingarantie', EIdentiFacture='$identfacture', EIdUtilisateur='$utilisateur' " ) or die(mysql_error());


(oui là en fait c'est la table pour les ecrans, la requete est plus courte  :lol: )
Donc ce que je comprend c'est qu'il refuse de creer une nouvelle entrée avec la même id (normal), sauf que finalement je lui demande pas ca du tout... qu'est ce que je peux faire?
merci ;)

Reply

Marsh Posté le 17-07-2006 à 10:33:35   

Reply

Marsh Posté le 17-07-2006 à 12:12:53    

J'ai l'impression que c'est un problème causé par l'utilisation des apostrophes du PHP.
Il faudrait donc essyer :

mysql_query("UPDATE materiel_ecran SET IdEcran='".$idecran."', EFournisseur='".
  $fournisseur."', EMarque='".$marque."', EModele='".
  $modele."', EType='".$type."', ETaille='".$taille."', ENumSerie='".
  $numserie."', EDateEntree='".$dateentree."', EDateSortie='".
  $datesortie."', EDateFinGarantie='".$datefingarantie."', EIdentiFacture='".
  $identfacture."', EIdUtilisateur='".$utilisateur."' " ) or die(mysql_error());

Reply

Marsh Posté le 17-07-2006 à 12:29:42    

je ne pense pas, la requete fonctionne tres bien si j'enleve juste le IdEcran='$idecran',  
a mon avis c'est vraiment la table qui deconne, mais je sais pas où :(

Reply

Marsh Posté le 19-07-2006 à 11:30:34    

Soit tu fait un update mais sans mettre la clef dans ton "set ..." soit tu fait un insert mais comme l'update est interdit sur la clef ça me semble assez normal qu'il rale un peu =)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed