Pb de requete SQL avec IF

Messages postés
192
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
10 août 2009
- - Dernière réponse : 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
Afficher la suite 

9 réponses

Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
25
0
Merci
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 !!!
Commenter la réponse de nicomilville
Messages postés
192
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
10 août 2009
0
Merci
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
Commenter la réponse de dvdstory
Messages postés
137
Date d'inscription
jeudi 18 juillet 2002
Statut
Membre
Dernière intervention
20 novembre 2016
0
Merci
euh...
je suis peu etre bete mais ta structure, c'est pas du visual basic??
dans ce cas pourquoi poste ta question sur phpcs?
@+
Commenter la réponse de bcmfr
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
25
0
Merci
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 !!!
Commenter la réponse de nicomilville
Messages postés
192
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
10 août 2009
0
Merci
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.
Commenter la réponse de dvdstory
Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
0
Merci
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  
Commenter la réponse de yoman64
Messages postés
137
Date d'inscription
jeudi 18 juillet 2002
Statut
Membre
Dernière intervention
20 novembre 2016
0
Merci
ah bah je savais pas qu'on pouvait faire des requetes comme ca, je me coucherais moins con!
Commenter la réponse de bcmfr
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
25
0
Merci
moi aussi, lol

Si t'a besoin d'aide, MP !!!
Commenter la réponse de nicomilville
Messages postés
192
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
10 août 2009
0
Merci
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.
Commenter la réponse de dvdstory