Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour à tous
Je souhaiterais savoir si il est possible de gérer les erreurs d'insertion de donnée dans une BDD MYSQL, je m'explique:
J'ai un script qui envoi des fichier CSV (;) dans mysql, j'ai un champ qui en unique donc si l'on essaye d'importer deux fois la même valeur ce n'est pas possible mysql renvoi cette erreur : Duplicate entry 'ma valeur' for key 1 normal
Est ce qu'il est possible de dire en php quelque chose du genre if($mysql_error == 'Duplicate entry') { echo 'Vous ne pouvez pas envoyer deux fois la même valeur'; } else { echo mysql_error(); }
Merci pour vos réponses
Antho
Hors ligne
l'utilisateur doit-il être prévenu ??
si non, je crois qu'avec IGNORE qqchose tu peut lui dire de continuer ( a mysql bien sur)
extrait :
Si on spécifie le mot IGNORE dans un INSERT avec les valeurs de plusieurs lignes, chaque ligne qui qui ferait doublon avec une clé PRIMARY ou UNIQUE existante dans la table sera ignoré et ne sera pas insérée. Si on ne spécifie pas IGNORE, l'insertion est abandonnée si quelque ligne que ce soit fait doublon avec une clé existante. La fonction mysql_info() de l'API C permet de savoir combien de lignes ont été insérées dans la table.
a++
Dernière modification par Pierrot (14-04-2010 09:03:45)
Hors ligne
Bonjour
J'aimerais que l'utilisateur ai un message comme quoi l'insertion s'est bien déroulée ou quelque chose qui remplace le message de base de mysql DUPLICATE ENTREY etc ...
Merci pour ta réponse
Antho
Dernière modification par Anthotill (15-04-2010 09:27:06)
Hors ligne
Il y a des fonctions pour retourner les codes d'erreur. mysql_error() par exemple, mais il y en a aussi une pour le numéro de l'erreur.
Tu peux donc personnaliser les messages suivant leur numéro.
Cependant lors d'une erreur le traitement mysql s'arrête mais il n'efface pas ce qui a déjà été fait.
Hors ligne
Il y a des fonctions pour retourner les codes d'erreur. mysql_error() par exemple, mais il y en a aussi une pour le numéro de l'erreur.
Tu peux donc personnaliser les messages suivant leur numéro.
Cependant lors d'une erreur le traitement mysql s'arrête mais il n'efface pas ce qui a déjà été fait.
Bonjour
Je ne comprend pas trop ce que tu veux dire en disant "Cependant lors d'une erreur le traitement mysql s'arrête mais il n'efface pas ce qui a déjà été fait." ? A partir du moment ou mon champ est en unique, si mysql a rempli ce qu'il avait à remplir ce n'est pas grave (j'ai peut être mal compris) ?
Merci
Hors ligne
Je ne sais pas ce que tu traites comme données donc je suis parti sur le principe que tu insérais plusieurs enregistrements.
Si une erreur survient lors du 5eme les suivants ne seront pas fait, mais les 4 premiers seront dans la bdd.
Hors ligne
Je ne sais pas ce que tu traites comme données donc je suis parti sur le principe que tu insérais plusieurs enregistrements.
Si une erreur survient lors du 5eme les suivants ne seront pas fait, mais les 4 premiers seront dans la bdd.
Ok je comprend, il faut donc que j'utilise REPLACE ou IGNORE suivant les cas d'après la doc sql. Merci pour votre aide mon problème est résolu
Hors ligne
Pages :: 1