Problème avec WHERE et un nombre

Problème avec WHERE et un nombre - SQL/NoSQL - Programmation

Marsh Posté le 11-02-2019 à 10:17:27    

Bonjour à tous,
 
Avec la requête suivante, pas de problème:

Code :
  1. SELECT
  2. inscriptions.id_membre
  3. FROM inscriptions
  4. WHERE id_reunion = '6'


 
Par contre, si je remplace le 6 par $num_reunion, cela ne fonctionne pas, alors que si j'affiche $num_reunion quelque part, je vois qu'il récupère bien le 6.
C'est donc la requête suivante qui ne fonctionne pas:

Code :
  1. SELECT
  2. inscriptions.id_membre
  3. FROM inscriptions
  4. WHERE id_reunion = '".$num_reunion."'


 
Pour info, je récupère $num.reunion via une requête précédente. Il s'agit d'un id en autoincrément.
 
Serait-ce parce que la requête ci-dessus est dans une fonction? Elle est pourtant écrite en dessous de la première requête et appelée tout en bas de page...
 
Merci d'avance pour vos lumières!


Message édité par bingojm le 11-02-2019 à 10:19:38
Reply

Marsh Posté le 11-02-2019 à 10:17:27   

Reply

Marsh Posté le 11-02-2019 à 10:49:26    

je viens de contourner le problème en remettant la première requête dans la fonction. Et là, pas de souci...

Reply

Marsh Posté le 11-02-2019 à 12:07:00    

Ben évidemment, il faut passer la variable $num_reunion en paramètre de ladite fonction. Si tu avais fait un var_dump($num_reunion); dans ta fonction, tu aurais vu qu'elle n'était pas déclarée et donc valait null.
 
Au passage, vu que c'est un id (un entier donc), tu peux enlever les quotes dans ta requête :
"SELECT inscriptions.id_membre FROM inscriptions WHERE id_reunion = $num_reunion";
 
Attention aux sql innjections tout de même :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 11-02-2019 à 15:35:23    

rufo a écrit :

Attention aux sql innjections tout de même :o

+1!!

Reply

Marsh Posté le 11-02-2019 à 16:31:36    

Vous pensez que c'est risqué ici? C'est pour faire un cron pour l'envoi d'un mail. Donc pas d'accès direct pour les utilisateurs...
Pour se protéger au mieux, il faudrait donc faire: WHERE id_reunion = ".mysqli_real_escape_string($num_reunion)." ? Même si $num_reunion vient d'une requete précédente et pas d'un formulaire client?

Reply

Marsh Posté le 11-02-2019 à 18:00:11    

Ca fait pas de mal de sécuriser la requête. T'es pas à l'abri que plus tard, cette variable soit alimentée autrement.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed