syntaxe d'une variable dans une requete : les guillemets

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : syntaxe d'une variable dans une requete : les guillemets

Re: syntaxe d'une variable dans une requete : les guillemets

par moogli » 15 mars 2015, 16:07

salut,

resource correspond un objet interne à php qui permet l'accès à des "ressources" :)
Suivant le type il peut s'agir d'une connexion SGBD, accès fichier ou autre.

la a priori c'est une connexion sgbd même si avec le code de sirakawa cela ne semble pas possible.
il faudrait afficher la variable $res pour obtenir ce message.
Le code fournit par sirakawa permet d'afficher la requête afin de la tester avec un client SQL pour s'assurer qu'elle est correcte.
En SQL pas besoin de ' autour d'un entier (id présume identifiant qui généralement est un entier) si ce n'est pas un entier effectivement les ' s'impose.
C'est avec la requête affichée que tu peux résoudre ton problème d'originie.

Personnellement je suis contre l'utilisation des " pour les chaines de caractères, car source d'erreur et de code anti performant.
La concaténation est aussi nettement plus lisible (plutôt que de devoir chercher dans une chaîne s'il y a une variable).
<?php
$req= 'select * from cotisation AS c, relmembreactivite AS r, membres AS m
WHERE c.idmembre = m.idmembre AND r.idmembre=m.idmembre AND r.idactivite='.$idactivite.' GROUP BY nom ORDER BY nom';
print $req;// il n'y a pas besoin de " pour afficher une variable
Il faut aussi toujours tester une requête SQL avant de l'utiliser avec php pour s'assurer de la syntaxe ;)
Coté syntaxe autant utiliser une syntaxe normée histoire d'avoir quelque chose de plus lisible.
par exemple
select * 
from cotisation AS c
join membres AS m using(idmembre)
join relmembreactivite AS r using(idmembre)
WHERE r.idactivite= 132
ORDER BY nom
Tu auras ainsi jointure et prédicat correctement séparé.
Group by s'utilise avec des fonctions de group (count, sum etc.) a priori pas besoin ici ;)

@+

Re: syntaxe d'une variable dans une requete : les guillemets

par phibad » 15 mars 2015, 11:01

Bonjour Sirakawa
Merci : j'ai obtenu : Resource id #8
Je n'ai pas trouvé dans les forums ce que ça signifie.

Re: syntaxe d'une variable dans une requete : les guillemets

par sirakawa » 14 mars 2015, 21:26

Il faut prcéder en deux temps:
$req= "select * from cotisation AS c, relmembreactivite AS r, membres AS m
WHERE c.idmembre = m.idmembre AND r.idmembre=m.idmembre AND r.idactivite='$idactivite' GROUP BY nom ORDER BY nom";
print "$req";
$res = mysql_query($req);
if ($res === false)
{
}
else
{
}

Re: syntaxe d'une variable dans une requete : les guillemets

par phibad » 14 mars 2015, 17:37

Bonjour
J'ai le message suivant : "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 'GROUP BY nom ORDER BY nom' at line 2"

Re: syntaxe d'une variable dans une requete : les guillemets

par tof73 » 14 mars 2015, 16:26

la syntaxe me parait correcte.
que se passe-t-il exactement ?

syntaxe d'une variable dans une requete : les guillemets

par phibad » 14 mars 2015, 15:47

Bonjour
Je bute souvent sur la même erreur : au bout de longs tâtonnements, je tombe parfois par hasard sur une syntaxe qui marche, sans trop comprendre. Comment écrire les points, les guillemets et les quotes dans "r.idactivite=$idactivite" dans le code suivant qui ne fonctionne pas. Je pensais qu'il faut fermer les guillemets, puis concaténer, puis ouvrir les guillemets :
$req=mysql_query("select * from cotisation AS c,relmembreactivite AS r, membres AS m
WHERE c.idmembre = m.idmembre AND r.idmembre=m.idmembre AND r.idactivite=".$idactivite." GROUP BY nom ORDER BY nom")
or die (mysql_error());
Merci pour votre aide.