Empécher les insertions doubles...

Résolu/Fermé
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 - 7 juin 2010 à 15:00
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 - 8 juin 2010 à 10:49
Bonjour,

Suite à cette manipulation :

<?php
	session_start();
	if(!empty($_POST))
	{
		foreach($_POST as $cle => $val)
		{ 
			$_SESSION[$cle] = $val; 
		}
		unset($_POST);
	
		session_write_close();
		echo "<script type='text/javascript'>history.go(-1);</script>"; 
	}
?>



je convertie mes variables POST en variables de SESSION. Ainsi je n'ai plus d'erreur en retournant à la page précédente. Cependant lorsque j'effectue une insertion sous mysql, cette dernière s'exécute deux fois. Ainsi ma requête est bien exécutée, mais j'ai du coup un message d'erreurs dû au doublon généré. Existe-t-il un moyen d'empêcher la même requête de s'exécuter plusieurs fois. D'avance merci...


5 réponses

Pour gérer ça avec MySQL, tu peux utiliser l'instruction "ON DUPLICATE KEY". Tu trouveras plus d'infos sur cette page :
https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
7 juin 2010 à 15:48
Merci pour cette piste. Maintenant est-il possible de ne rien faire après le ON DUPLICATE KEY, parce que d'après l'exemple, on doit obligatoirement faire qqch comme un update.Merci
0
Dans ce cas, "ON DUPLICATE KEY IGNORE" devrait faire l'affaire.

Voila, bonne continuation :)
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
7 juin 2010 à 16:12
Le IGNORE ne fonctionne pas chez moi par contre je fais un update bidon et c'est bon. Merci pour cette aide précieuse et rapide...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
8 juin 2010 à 10:49
En fait au lieu du
ON DUPLICATE KEY IGNORE
, il suffit simplement de faire un
INSERT IGNORE INTO table VALUES....
0