J'ai un formulaire PHP qui entre des données dans ma base de données MySQL. Ma clé primaire est l'une des valeurs entrées par l'utilisateur. Lorsque l'utilisateur entre une valeur qui existe déjà dans la table, l'erreur MySQL "Entrée en double 'valeur entrée' pour la clé 1" est renvoyée . Au lieu de cette erreur, je voudrais avertir l'utilisateur qu'il doit entrer une valeur différente. Juste un message en écho ou quelque chose comme ça ... Je pense que ma question se résume à: Comment transformer une erreur MySQL spécifique en un message PHP Merci
edit: la réponse de nickf ci-dessous est Nice, mais existe-t-il un moyen de distinguer entre des erreurs spécifiques?
Pour vérifier cette erreur spécifique, vous devez trouver le code d'erreur . C'est 1062
pour la clé en double. Utilisez ensuite le résultat de errno()
pour comparer avec:
mysql_query('INSERT INTO ...');
if (mysql_errno() == 1062) {
print 'no way!';
}
Une note sur le style de programmation
Vous devriez toujours chercher à éviter l’utilisation de nombres magiques (je sais, c’est moi qui l’ai introduit dans cette réponse). Au lieu de cela, vous pouvez affecter le code d'erreur connu (1062
) à une constante (par exemple MYSQL_CODE_DUPLICATE_KEY
). Cela facilitera la maintenance de votre code car la condition dans l'instruction if
est toujours lisible dans quelques mois lorsque la signification de 1062
a disparu de la mémoire :)
Vous pouvez vérifier la valeur de retour à partir de mysql_query
lorsque vous effectuez l'insertion.
$result = mysql_query("INSERT INTO mytable VALUES ('dupe')");
if (!$result) {
echo "Enter a different value";
} else {
echo "Save successful.";
}
essayez ce code pour gérer les entrées en double et afficher le message echo:
$query = "INSERT INTO ".$table_name." ".$insertdata;
if(mysqli_query($conn,$query)){
echo "data inserted into DB<br>";
}else{
if(mysqli_errno($conn) == 1062)
echo "duplicate entry no need to insert into DB<br>";
else
echo "db insertion error:".$query."<br>";
}//else end
Avec mysql_error () function http://php.net/manual/en/function.mysql-error.php
Utilisez la fonction mysql_errno()
, elle renvoie les numéros d'erreur. Le numéro d'erreur pour les clés en double est 1062. Par exemple
$query = mysql_query("INSERT INTO table_name SET ...);
if (mysql_errno() == 1062){
echo 'Duplicate key';
}