Empécher les insertions doubles...
Résolu
Bonjour,
Suite à cette manipulation :
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...
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 -
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
-
Dans ce cas, "ON DUPLICATE KEY IGNORE" devrait faire l'affaire.
Voila, bonne continuation :) -
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...
-
En fait au lieu du
ON DUPLICATE KEY IGNORE
, il suffit simplement de faire unINSERT IGNORE INTO table VALUES....