Pb requête PHP

  • Auteur de la discussion Auteur de la discussion webac
  • Date de début Date de début
WRInaute occasionnel
Bonjour,

voici ma requête :

Code:
$select = 'select * FROM rma WHERE login='.$login.' ORDER BY rma ASC limit '.$limite.','.$nombre;

avec cette requette j'obtiens le message d'erreur suivant :

Code:
Erreur : Champ 'webac' inconnu dans where clause

c'est une histoire de " ou de ' c'est sur mais ou?

pouvez vous m'aider?
 
WRInaute discret
essaye en remplacant petit a petit tes '.$XXXX.' par des vrai valeur 4 ou 5 ou 8 et tu vois celle ki bugue et celle qui bugue pas
 
WRInaute discret
ca peut venir d'apres.... essaye en remplacant login par une vrai valeur et verifie si le type des champ corresponde bien, et que login e bien initialiser ( avec un echo par ex)
 
WRInaute occasionnel
voici ce que j'obtiens avec echo $select; :

Code:
select * FROM rma WHERE login=webac ORDER BY rma ASC limit 0,5

apparament rien d'anormal!
 
WRInaute occasionnel
merci a tous en fait voici ma requête :

Code:
$select = 'select * FROM rma WHERE login="'.$login.'" ORDER BY rma ASC limit '.$limite.','.$nombre;

je ne sais pas si c'est très pro mais ça fonctionne.
 
WRInaute accro
seebz a trouvé, t as pas mis de ' ou " devant ta valeur. il essayai de comparer 2 champs de la table si tu ne les met pas.

donc ta technique est pro, pas de soucis
 
WRInaute occasionnel
et pour corriger le titre : ce n'est en aucun cas un problème de requête PHP, mais bien un problème de requête Mysql.
PHP n'est pas un langage de requetes...
 
WRInaute passionné
Si ta variable login vient d'un formulaire, il faut ajouter un addslashes pour éviter de se faire pirater :
if (!get_magic_quotes_gpc())
$login = addslashes($login);
$select = "select * FROM rma WHERE login='$login' ORDER BY rma ASC limit $limite,$nombre";
 
WRInaute occasionnel
il y a un truc que je ne saisis pas dans ta requete SQL, quand tu fais un "ORDER BY rma " rma est bien un champs dans ta table ? je suis pas un pro, mais si tu essayes de faire un order sur une table .. ca risque de ne pas fonctionner je pense
 
WRInaute occasionnel
ah et pour les autres, au sujet du addslashes,

J'ai toujours cherché des articles sur la sécurité php. J'utilise beaucoup de traitements de formulaires du même type ou je récupère mes varibles de la facon suivante :

$login = $_POST['login'];

$sql= "SELECT * FROM `user` WHERE `login` = '$login'";

cette requette pose problème niveau sécurité ?
 
WRInaute occasionnel
ok, j'ai saisi la nuance. par contre, je trouve l'utilisation de mysql_real_escape_string assez contraignante. est-ce que addslashes règle le problème entièrement ou certaines choses peuvent passer ?

Bon dans l'exemple donné, le problème ne se pose pas puisque j'utilise des comparaisons avec md5. Mais je vais quand meme vérifier les autres requetes pour vérifier qu'il ne pourrait pas y avoir des problèmes similaires.
 
WRInaute accro
Kaliiii a dit:
ok, j'ai saisi la nuance. par contre, je trouve l'utilisation de mysql_real_escape_string assez contraignante. est-ce que addslashes règle le problème entièrement ou certaines choses peuvent passer ?

Bon dans l'exemple donné, le problème ne se pose pas puisque j'utilise des comparaisons avec md5. Mais je vais quand meme vérifier les autres requetes pour vérifier qu'il ne pourrait pas y avoir des problèmes similaires.

Que trouves-tu contraignant dans le fait d'utiliser mysql_real_escape_string ? La longueur du nom de la fonction ? Si c'est ça le souci, rien ne t'empêche de faire une fonction wrapper qui appelerait mysql_real_escape_string().
 
WRInaute occasionnel
Autant pour moi j'ai cru qu'il fallait automatiquement faire un sprintf de la requete, ce qui me forcait a faire des modifs sur touuuuutes les requetes du site :D
 
Discussions similaires
Haut