Requéte demi-merdique

Requéte demi-merdique - PHP - Programmation

Marsh Posté le 22-03-2008 à 16:55:25    

Bonjour, ca doit bien faire 1 heure que j'a m'arrache les cheveux sur un problème : quand je vais dans phpmyadmin et que je tape cette requête :
 
SELECT COUNT(*) AS nb_entrees FROM connectes WHERE ip='127.0.0.1'
 
Ca me retourne le bon résultat, mais quand cette même requéte est appelée dans un script php :
 

Code :
  1. $ip=$_SERVER['REMOTE_ADDR'];
  2. $req = "SELECT COUNT(*) AS nb_entrees FROM connectes WHERE ip='$ip'";
  3. $req = db::query($req);
  4. $donnees = mysql_fetch_array($req);


 
J'ai cette erreur :

Citation :

Erreur de syntaxe près de '\'127.0.0.1\'' à la ligne 1


 
Et c'est pas ma fonction db::query qui fait ca, quand j'utilise mysql_query ca fait pareil
 
J'y comprends rien, ca me prend la tête.
 
Merci de votre aide


---------------
cours pour débuter sous 3d studio max - Photoshop pour les nuls
Reply

Marsh Posté le 22-03-2008 à 16:55:25   

Reply

Marsh Posté le 22-03-2008 à 17:48:30    

Code :
  1. $req = "SELECT COUNT(*) AS nb_entrees FROM connectes WHERE ip=$ip";


 
Et ça ?


---------------
Comme dirait quelqu'un de beaucoup plus avisé que moi, quelquefois c'est toi qui cognes le bar mais d'autres fois, et ben, c'est le bar qui te cogne.
Reply

Marsh Posté le 23-03-2008 à 01:48:35    

Kyfun a écrit :

Code :
  1. $req = "SELECT COUNT(*) AS nb_entrees FROM connectes WHERE ip=$ip";


Et ça ?


ca risque de marcher encore moins ...depuis quand on entoure pas les chaines avec des ' ?

Citation :

 
Erreur de syntaxe près de '\'127.0.0.1\'' à la ligne 1


des antislashes+ des quotes semblent ajoutés sans ta demande...
cherche de ce coté là (probleme de conf php, magic_quote_runtime peut etre)

Message cité 1 fois
Message édité par Profil supprimé le 23-03-2008 à 01:48:58
Reply

Marsh Posté le 25-03-2008 à 18:53:14    

 
Depuis quand y'a des ' ' automatiquement dans ces chaines ? ^^


Message édité par Kyfun le 25-03-2008 à 18:53:26

---------------
Comme dirait quelqu'un de beaucoup plus avisé que moi, quelquefois c'est toi qui cognes le bar mais d'autres fois, et ben, c'est le bar qui te cogne.
Reply

Marsh Posté le 27-03-2008 à 00:28:49    

Ca fonctionnera mieux comme ça ...
 

Code :
  1. $req = 'SELECT COUNT(*) AS nb_entrees FROM connectes WHERE ip='.$ip.'';


Mon expérience te dis d'éviter les simples cotes pour le PHP, et n'oublie pas de concaténer tes variables avec des points comme ici.
 
Edit: et d'ailleurs, cette requête ne sert pas trop, si tu comptes les connectés avec une IP fixe, tu as de forte de chance d'obtenir 0 ou 1 comme résultat... ça peut servir, mais à quoi ?

Message cité 1 fois
Message édité par Fused le 27-03-2008 à 00:31:15
Reply

Marsh Posté le 27-03-2008 à 10:43:47    

Fused a écrit :

Ca fonctionnera mieux comme ça ...
 

Code :
  1. $req = 'SELECT COUNT(*) AS nb_entrees FROM connectes WHERE ip='.$ip.'';


Mon expérience te dis d'éviter les simples cotes pour le PHP, et n'oublie pas de concaténer tes variables avec des points comme ici.
 
Edit: et d'ailleurs, cette requête ne sert pas trop, si tu comptes les connectés avec une IP fixe, tu as de forte de chance d'obtenir 0 ou 1 comme résultat... ça peut servir, mais à quoi ?


 
 
Au contraire, je dirais qu'il vaut mieux utiliser des simples quotes. Avec des simples quotes les variables ne sont pas interprétés donc légèrement plus rapide.
si ip était une variable ton code serait presque bon mais ip est une chaine de caractère, il faut donc les mettre entre quote.
 

Code :
  1. $req = 'SELECT COUNT(*) AS nb_entrees FROM connectes WHERE ip=\'' .$ip. '\'  ';


 
si ip étais un nombre, on aurait pu l'écrire :

Code :
  1. $req = 'SELECT COUNT(*) AS nb_entrees FROM connectes WHERE ip=' .$ip;

Reply

Marsh Posté le 27-03-2008 à 13:33:36    

Oui c'est ce que je voulais dire, éviter les doubles cotes, mon exemple le montre, lapsus !

Reply

Marsh Posté le 27-03-2008 à 13:50:11    

Oki, je comprends, c'est vrai qu'en mettant 2 simples cotes de suite, on a l'impression d'avoir une double cote. C'est ce que tu voulais dire.
 
 
PS : Fused, merci pour l'orthographe de cotes. Je l'ecrivais toujours avec "qu", cet orthographe est aussi correct mais c'est en anglais. cotes avec un C est l'orthographe francaise.

Reply

Marsh Posté le 27-03-2008 à 14:47:32    

De rien ;-)

Reply

Sujets relatifs:

Leave a Replay

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