Pb de requete SQL avec IF

dvdstory Messages postés 192 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 10 août 2009 - 5 avril 2008 à 15:33
dvdstory Messages postés 192 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 10 août 2009 - 6 avril 2008 à 18:44
Bonjour à tous.

Je veux ajouter un pseudo dans ma table uniuement si le pseudo n'est pas encore présent dans la table.
Donc je dois vérifier si le pseudo n'est pas déja présent dans la table, j'esaye de faire ça avec une structure IF.
Mais ça ne marche pas.

IF (SELECT COUNT(*) FROM `matablel` WHERE `pseudo` = 'pierre')=0 THEN
INSERT INTO `matable` (`pseudo`)
VALUES ('pierre')
END IF

Voici le message d'erreur que MySQL me renvoie

#1064 - You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near 'IF( SELECT COUNT( * ) FROM `matable` WHERE `pseudo` = 'pierre'
)=0 THEN  INSERT ' at line 1


Merci d'avance

9 réponses

nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
5 avril 2008 à 15:39
ce serai plus facile si tu mettais ton champs pseudo en unique et que si il y a avais une erreur tu disais que le pseudo est déja pris !!

Si t'a besoin d'aide, MP !!!
0
dvdstory Messages postés 192 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 10 août 2009
5 avril 2008 à 16:52
C'est déja fait mais le pb c'est que ça n'est qu'une partie de la requette (je n'ai pas mis le reste pour ne pas encombrer et exposé mon pb clairement car si j'exécute le reste de la requette séparément, elle fonctionne nikel chrome), et que si il y a une erreur, MySQL n'exécute pas la suite.http://www.UnrealNetwork.net
0
bcmfr Messages postés 137 Date d'inscription jeudi 18 juillet 2002 Statut Membre Dernière intervention 20 novembre 2016
6 avril 2008 à 08:52
euh...
je suis peu etre bete mais ta structure, c'est pas du visual basic??
dans ce cas pourquoi poste ta question sur phpcs?
@+
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
6 avril 2008 à 08:56
Je suis con, je n'avais m^me pas remarqué alors que c'est avec ce langage que j'ai commencé !!!

Si t'a besoin d'aide, MP !!!
0

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

Posez votre question
dvdstory Messages postés 192 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 10 août 2009
6 avril 2008 à 14:30
Non, je veux faire du SQL.
On ne peut pas mettre de structure IF avec du SQL ??

En faite j'utilise LAMP, donc pas de VB.
0
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 1
6 avril 2008 à 17:59
Salut,

Lol, vous êtes bêtes c'est pas du visual Basic ça se ressemble même pas... (Voir comment les champs et les strings sont entourés sans parler du insert sur deux lignes, en vb il fauderait le concatener avec un \...C'est clairement du SQL)

Enfin oui il y a bien une structure IF en SQL sauf que je ne crois pas qu'elle soit adaptée à ton problème, il y a sans doute de meilleure façon de faire (Il fauderait voir ta requête complete et savoir quel résultat tu attends pour t'aider plus).

Voir la doc pour plus d'infos: http://dev.mysql.com/doc/refman/5.0/en/if-statement.html

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
0
bcmfr Messages postés 137 Date d'inscription jeudi 18 juillet 2002 Statut Membre Dernière intervention 20 novembre 2016
6 avril 2008 à 18:13
ah bah je savais pas qu'on pouvait faire des requetes comme ca, je me coucherais moins con!
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
6 avril 2008 à 18:17
moi aussi, lol

Si t'a besoin d'aide, MP !!!
0
dvdstory Messages postés 192 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 10 août 2009
6 avril 2008 à 18:44
Réponse à [auteur/YOMAN64/3282.aspx yoman64]

C'est déja la requête complète, enfaite le reste c'est d'autres requettes séparées par un point virgule ' ; ' qui sont totalement indépendantes et interagisse avec d'autre tables.

Le pb c'est que s'il y a une erreur dans une des requêtes indépendantes alors MySQL  n'exécute plus les requêtes suivantes (même si elle sont indépendante et séparées par un point virgule).
La solution serait que j'envoie les requêtes indépendantes séparément avec PHP et pas toutes en même temps comme je le fait actuellment mais pour les performences c'est pas top du tout et sa ralonge mon code.

PS: j'ai regardé mon livre sur MySQL5,
"MySQL Le guide complet" 
EAN13: 9782742968732  
ISBN: 2-7429-6873-3

J'ai remarqué que les explications sur le "IF THEN" faisait partie du chapitre 14 "Le SQL dynamique" et dans le sous chapitre 14.1 "Les procédures stockées".
Je me suis demandé que peut être la structure IF THEN ne peut être utilisé que dans les procédures stockées.

J'en suis pas sûr je demande confirmation.
0