Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2851 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  problème de requete sql

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème de requete sql

n°1553421
wydook
Posté le 03-05-2007 à 21:11:41  profilanswer
 

Bonsoir.
 
J'ai un petit problème de requete sql
 
$sql = "SELECT id, ville, pays, image, source, site, commentaire FROM webcams WHERE pays='$_GET['pays']'
 ORDER BY id";
 
 
et cette erreur:
 
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/www/23a8702f964c3b2d2b4e5dfc338a526e/web/webcamstt.php on line 126


---------------
Toute l'actualité météo en continu http://www.meteo-world.com
mood
Publicité
Posté le 03-05-2007 à 21:11:41  profilanswer
 

n°1553427
olivthill
Posté le 03-05-2007 à 21:40:14  profilanswer
 

Encore un problème d'apostrophe.
 
Quand un programme voit une apsotrophe, il va bêtement jusqu'à l'apostophe suivante. Ce qui donne :  
$sql = "SELECT id, ville, pays, image, source, site, commentaire FROM webcams WHERE pays='$_GET['pays']'  
 ORDER BY id";  
 
Pour éviter ça, écrire :
 

$sql = "SELECT id, ville, pays, image, source, site, commentaire FROM webcams WHERE pays='".$_GET['pays']."' ORDER BY id";

n°1555216
NewsletTux
<Insérez ici votre vie />
Posté le 04-05-2007 à 10:56:51  profilanswer
 

oui, et pour éviter l'injection SQL qui est dangereuse, il faudrait au préalable typer ta variable ...
 
$sql = sprintf("SELECT id, ville, pays, image, source, site, commentaire FROM webcams WHERE pays='%s' ORDER BY id;",$_GET['pays']);
 
puis la clause du ORDER BY est-elle sous-entendue si non précisée ? ASC / DESC ?

n°1555641
kirua_sama
Learn sciences with senses
Posté le 05-05-2007 à 11:34:32  profilanswer
 

J'aimerais bien un petite explication s'il te plait sur ton typage de variable :ange:


---------------
“L'éducation est l'arme la plus puissante que l'on puisse utiliser pour changer le monde”
n°1555668
NewsletTux
<Insérez ici votre vie />
Posté le 05-05-2007 à 13:11:13  profilanswer
 

En fait, $_GET récupère une variable venant de l'URL ... Or comme toute URL, ça peut se modifier sans trop de souci.
 
La fonction sprintf (http://fr.php.net/manual/fr/function.sprintf.php) permet de typer une variable avec des marqueurs :
- %d : un entier ("decimal" )
- %s : une chaine de caractères ("string" )
- %f : un nombre à virgule ("float" )
... (RTFM :D)
 
Rien ne te prouve que ce qui est dans $_GET['pays']ne soit réellement une chaine de caractères de type "string" ...
 
Par exemple, écrire

Code :
  1. $lambda = sprintf("Salut, %s, tu as %d an(s)",$prenom,$age);


 
affichera $prenom en tant que string (%s) et $age en tant que decimal (%d)
je mets $prenom, $age dans le même ordre qu'apparaissent les "marqueurs" dans la chaine que je veux retourner.

n°1555743
naeh
Posté le 05-05-2007 à 16:56:17  profilanswer
 

Sauf si j'ai rien compris, ce typage n'aide en rien contre les injection Sql.
 
puisqu'une injection sql, c'est remplacer le le pays (dans le $_get) par un bout de requete sql qui est sera lui aussi une chaine string.
 
non ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  problème de requete sql

 

Sujets relatifs
problème de requete en fonction de l'url de la pageProbleme de requête (group by)
[sql] probleme requete sql.[MySql]Probleme requete interval date début- date fin pour réservation
Problème sur une requête (ifnull ?)probleme requete MATCH mysql_fetch_???
requête sql+php: problème de syntaxePetit probleme sur une requete avec date
Probléme requete sql = unknow columnProbleme d'association de requete Count et Select
Plus de sujets relatifs à : problème de requete sql


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR