Erreur de syntaxe ????????????????????????

Erreur de syntaxe ???????????????????????? - PHP - Programmation

Marsh Posté le 17-06-2005 à 15:21:30    

:bounce: bonjour :bounce:  
je code:
 
 $requete="SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur=".$NumFournisseur;
 
et on me dit:
 
Erreur SQL !SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur=
Erreur de syntaxe près de '' à la ligne ..
 
comprend pas...


---------------
merci
Reply

Marsh Posté le 17-06-2005 à 15:21:30   

Reply

Marsh Posté le 17-06-2005 à 15:22:44    

Y'a quoi dans ton $NumFournisseur ? S'il est vide, c'est normal que ça foire...

Reply

Marsh Posté le 17-06-2005 à 15:23:00    

HURSSSSSSS  
Ta appris à codé ouk toi..?

Code :
  1. $requete="SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur='$NumFournisseur'";

Reply

Marsh Posté le 17-06-2005 à 15:23:07    

numfournisseur est surement un champs TEXT ou VARCHAR. Il faut donc le mettre en quote :
 $requete='SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur="'.$NumFournisseur.'"';
 
edit : FlorentG is the winner, il semblerait probable que numfournisseur soit un champ INT


Message édité par Master p le 17-06-2005 à 15:25:27
Reply

Marsh Posté le 17-06-2005 à 15:25:02    

micfont999 a écrit :

HURSSSSSSS  
Ta appris à codé ouk toi..?

Code :
  1. $requete="SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur='$NumFournisseur'";



Et toi, c'est où que t'as appris à coder ? :D

$requete = 'SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur=\'' . $NumFournisseur . '\'';


(en faisant gaffe que $NumFournisseur ai été escapé au préalable


Message édité par FlorentG le 17-06-2005 à 15:25:17
Reply

Marsh Posté le 17-06-2005 à 15:25:31    

As-tu vérifié si $NumFournisseur n'est pas vide (zero) ?
 
Edit: Ok, j'arrive après la bataille... Désolé!


Message édité par ACut le 17-06-2005 à 15:26:06
Reply

Marsh Posté le 17-06-2005 à 15:26:43    

FlorentG a écrit :

$requete = 'SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur=\'' . $NumFournisseur . '\'';


Quelle horreur [:tinostar]

$requete = 'SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur="' . $NumFournisseur . '"';


Reply

Marsh Posté le 17-06-2005 à 15:26:47    

Le mieux est une petite fonction :

function escape($str) {
 
  if(get_magic_quotes_gpc()) {
 
   $str = stripslashes($str);
  }
  if(!is_numeric($str)) {
 
   $str = '\'' . addslashes($str) . '\'';
  }
  return $str;
 }


Comme ça si c'est vide ou si c'est un string, ça escape et ça fout les quotes

Reply

Marsh Posté le 17-06-2005 à 15:27:14    

Master p a écrit :

Quelle horreur [:tinostar]

$requete = 'SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur="' . $NumFournisseur . '"';



Le miens, y'a des antislashs, ça fait plus pro :o

Reply

Marsh Posté le 17-06-2005 à 15:28:16    

FlorentG a écrit :

Et toi, c'est où que t'as appris à coder ? :D

$requete = 'SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur=\'' . $NumFournisseur . '\'';


(en faisant gaffe que $NumFournisseur ai été escapé au préalable


 
Bah chui désolé mais pourquoi s'embeter à concaténer le code alors qu'on peux faire un truc simple...?
Je ne sais pas si son $numfournisseur est vide ou non ça fo l'afficher pour voir, mais en tout cas, je pensais que l'erreur venais de la.. Désolé ..  :jap:  :(

Reply

Marsh Posté le 17-06-2005 à 15:28:16   

Reply

Marsh Posté le 17-06-2005 à 15:28:40    

ouai merci sauf que maintenant quand j'affiche le résultat de la requète :  
 $requete="SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur='$NumFournisseur'";
  $result=mysql_query($requete,$db) or die('Erreur SQL !'.$requete.'<br>'.mysql_error());
 
  echo 'La commande pour '.$result.' a été enregistrée.';
 
cela m'affiche "Resource id #3 " au lieu du Nom du fournisseur..


---------------
merci
Reply

Marsh Posté le 17-06-2005 à 15:29:44    

Après ton $result, fait $data = mysql_fetch_object;  
echo 'La commande pour '.$data->nomfournisseur.' a été enregistrée.';

Reply

Marsh Posté le 17-06-2005 à 15:30:13    

micfont999 a écrit :

Bah chui désolé mais pourquoi s'embeter à concaténer le code alors qu'on peux faire un truc simple...?
Je ne sais pas si son $numfournisseur est vide ou non ça fo l'afficher pour voir, mais en tout cas, je pensais que l'erreur venais de la.. Désolé ..  :jap:  :(


Parce que dans ton cas, il doit parser la chaîne à la recherche de variables, donc d'un point de vue masturbatoire, ton code est beaucoup plus lent que le miens :D

guen16 a écrit :

ouai merci sauf que maintenant quand j'affiche le résultat de la requète :  
 $requete="SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur='$NumFournisseur'";
  $result=mysql_query($requete,$db) or die('Erreur SQL !'.$requete.'<br>'.mysql_error());
 
  echo 'La commande pour '.$result.' a été enregistrée.';
 
cela m'affiche "Resource id #3 " au lieu du Nom du fournisseur..


Va lire la doc sur mysql_fetch_assoc ou sur mysql_result :o

Reply

Marsh Posté le 17-06-2005 à 15:31:14    

FlorentG a écrit :

Parce que dans ton cas, il doit parser la chaîne à la recherche de variables, donc d'un point de vue masturbatoire, ton code est beaucoup plus lent que le miens :D


 
J'y peux rien si t'est précose  [:magnasuprema]  :lol:  :lol: Moi j'aime prendre mon temps...  :jap:  :D  
 

Reply

Marsh Posté le 17-06-2005 à 15:32:51    

micfont999 a écrit :

J'y peux rien si t'est précose  [:magnasuprema]  :lol:  :lol: Moi j'aime prendre mon temps...  :jap:  :D


Mince, c'était pas dans ce sens :D J'voulais dire que si t'es du genre à te masturber sur des optimisations, c'est mon code qui est plus mieux :D

Reply

Marsh Posté le 17-06-2005 à 15:32:53    

guen16 a écrit :

ouai merci sauf que maintenant quand j'affiche le résultat de la requète :  
 $requete="SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur='$NumFournisseur'";
  $result=mysql_query($requete,$db) or die('Erreur SQL !'.$requete.'<br>'.mysql_error());
 
  echo 'La commande pour '.$result.' a été enregistrée.';
 
cela m'affiche "Resource id #3 " au lieu du Nom du fournisseur..


 
La valeur de retour de mysql_query est un identifiant de ressource et non pas de la data clef en main. Des fonctions PHP permettent d'analyser cette ressource et de récupérer les champs associés. Il faudrait que tu te documentes un chouia avant de te lancer dans MySQL...

Reply

Marsh Posté le 17-06-2005 à 15:34:47    

Et même sans parler de lenteur, rien pour la coloration syntaxique (donc une meilleure lecture du code à l'écran) il faudrait concaténer correctement.

Reply

Marsh Posté le 17-06-2005 à 15:34:54    

FlorentG a écrit :

Mince, c'était pas dans ce sens :D J'voulais dire que si t'es du genre à te masturber sur des optimisations, c'est mon code qui est plus mieux :D


 
Mouai, c'est ça essai de te rattraper comme tu peux.. :)
 
Oki je dit pas l'inverse sinon ton script est certainement mieux... :D Moi je fonctionne comme je fait pas des prog de bourrin et ça fonctionne, après je changerais de méthode quand ça marchera plus.. :)

Reply

Marsh Posté le 17-06-2005 à 15:35:27    

Surfoo a écrit :

Et même sans parler de lenteur, rien pour la coloration syntaxique (donc une meilleure lecture du code à l'écran) il faudrait concaténer correctement.


 
Et s'il travail sur le bloc note...  :lol:  :lol:

Reply

Marsh Posté le 17-06-2005 à 15:38:39    

Je connais personne qui travaille avec le bloc note, faut être masochiste.
 
Scite roxx !

Reply

Marsh Posté le 17-06-2005 à 15:41:04    

Surfoo a écrit :

Je connais personne qui travaille avec le bloc note, faut être masochiste.
 
Scite roxx !


 
HAPedit aussi est très convenable,  bah tu sais qu'au début de mon stage je bossais sur bloc note la mission je te promet, j'ai laché l'affaire au bout de la 120 parse error pour un ; oublié..  :lol:

Reply

Marsh Posté le 17-06-2005 à 15:44:28    

Moi je suis sous jEdit avec un parser qui me dit mes erreurs de syntaxe PHP :)

Reply

Marsh Posté le 17-06-2005 à 15:46:16    

c'est normal ca: $data = mysql_fetch_object;  ?
il me semble qu'il devrait y avoir des parametres en parenthèse?
vu le résultat affiché:
 
Notice: Use of undefined constant mysql_fetch_object - assumed 'mysql_fetch_object' in c:\program files\easyphp1-7\www\formcomm.php on line 31
La commande pour a été enregistrée.


---------------
merci
Reply

Marsh Posté le 17-06-2005 à 15:46:55    

$fixed = mysql_fetch_object($result);


Aller, dis-nous que tu viens de commencer la programmation il y a 2 heures :D

Reply

Marsh Posté le 17-06-2005 à 15:54:35    

en gros il faut coder :  
 
 $requete="SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur='$NumFournisseur'";
  $result=mysql_query($requete,$db) or die('Erreur SQL !'.$requete.'<br>'.mysql_error());
  $data = mysql_fetch_object($result);
  echo 'La commande pour '.$data.' a été enregistrée.';
 
et bien figurez-vous que cela ne fonctionne pas :
 
"La commande pour a été enregistrée."


---------------
merci
Reply

Marsh Posté le 17-06-2005 à 15:57:45    

Ben ouais... T'as oublié la moitié :

 echo 'La commande pour ', $data->nomfournisseur, ' a été enregistrée.';


Note aussi les virgules à la place des points, pas besoin de concaténation pour un echo :)

Reply

Marsh Posté le 17-06-2005 à 15:58:05    

Bon le mieux, c'est que t'aille lire tout ça : http://fr.php.net/manual/en/ref.mysql.php

Reply

Marsh Posté le 17-06-2005 à 18:21:25    

c'est quoi l'URL du site, que j'aille lui faire quelques injections de SQL ? stune vraie passoire codé comme il est /o\


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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