Salut,
J'ai un champ unique dans ma table. Evidemment si je tente de rentrer un élément qui existe déjà j'ai une erreur duplicate entry. Comment faire pour faire un INSERT IGNORE, histoire de pas avoir d'erreur ?
Merci !
Version imprimable
Salut,
J'ai un champ unique dans ma table. Evidemment si je tente de rentrer un élément qui existe déjà j'ai une erreur duplicate entry. Comment faire pour faire un INSERT IGNORE, histoire de pas avoir d'erreur ?
Merci !
- tu peux faire try... catch.
ou
- faire une requete pour verifier l existance
Bon c'est bien dommage... mais ça explique mieux pourquoi j'ai rien trouvé sur ça... Je vais voir ça
Merci
Rapidement, j'ai googelé un peu et il semble que Raptor ai raison avec le try/catch:
http://stackoverflow.com/questions/2...y-and-doctrine
Tu m'en vois ravi.
En fait, le try...catch est l'outil pour prevoir les erreurs et prendre les disposition adequate (pas seulement pour la bdd). C'est toujours mieux d'afficher un joli message qui indique de maniere comprehensible (pour l'utilisateur), que de renvoyer une page : "server error, contactez l administrateur" :?
Le try... catch est à utiliser sans moderation!
Avec ça, ça marche ! Merci pour votre aide !:ccool:Code:
1
2
3
4
5
6
7
8 try { $em->flush(); } catch(Doctrine_Exception $e) { if($e->getErrorCode() !== $duplicateKeyCode){ } }
ou pas...
Avec ce code là, je vais jusqu'à arf3, après ça plante...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 try { $journal->savelog("arf1"); $em->persist($article); $journal->savelog("arf2"); } catch(Doctrine_Exception $e) { $journal->savelog("arf"); if($e->getErrorCode() !== $duplicateKeyCode){ $journal->savelog("ouch"); } } $journal->savelog("arf3"); try { $em->flush(); } catch(Doctrine_Exception $e) { $journal->savelog("arf"); if($e->getErrorCode() !== $duplicateKeyCode){ $journal->savelog("ouch"); } } $journal->savelog("arf4"); }
Sinon à tout hasard, il existe en mysql "ON DUPLICATE KEY" qui permet de faire un UPDATE à la place d'un INSERT en cas de doublon.
http://dev.mysql.com/doc/refman/5.0/...duplicate.html
Je ne veux pas faire d'update, si l'élément est déjà en base, je ne veux pas y toucher.
C'est pour mettre en base de donnée les articles d'un flux RSS, quand je vais lire le flux, j'ajoute que les articles paru depuis la dernière vérification