Pb SQL / Php

Pb SQL / Php - PHP - Programmation

Marsh Posté le 22-05-2002 à 01:55:26    

Salut,
 
J'ai des pages Php qui font appel à des requêtes SQL. Notamment des INSERT.
Dans une de ces INSERT, un message d'erreur me retourne :
"Champ 'thocan' inconnu dans field list"
où 'thocan' doit s'insérer dans le premier champ de ma table (un champ d'ID)
 
Bref, je pige pas vraiment d'où vient le pb.
Alors si quelqu'un peut m'aider...  :)  
 
Merci

Reply

Marsh Posté le 22-05-2002 à 01:55:26   

Reply

Marsh Posté le 22-05-2002 à 08:58:41    

En fait, j'ai une table "8finale1" avec les champs :
user,Match1,Match2...,date,Pays01,Pays02...
 
Ma requête prend donc la forme :
$sql1 = "INSERT INTO 8finale1(user,Match01,Match02,Match03,Match04,Matc
h05,Match06,Match07,Match08,date,Pays01,Pays02,Pay
s03,Pays04,Pays05,Pays06,Pays07,Pays08) VALUES($login,$T2_M01_1,$T2_M02_1,$T2_M03_1,$T2_M0
4_1,$T2_M05_1,$T2_M06_1,$T2_M07_1,$T2_M08_1,NOW(),
$T2_P1_1,$T2_P2_1,$T2_P3_1,$T2_P4_1,$T2_P5_1,$T2_P
6_1,$T2_P7_1,$T2_P8_1)";
mysql_query($sql1) or die('Erreur SQL !'.$sql1.'<br>'.mysql_error());
 
thocan est donc théoriquement inséré dans le champ user (valeur de $login).

Reply

Marsh Posté le 22-05-2002 à 09:04:09    

Erreur SUPER CLASSIQUE !
 
Les champs de type caractère DOIVENT être mis entre guillemets !
 
$sql1 = "INSERT INTO 8finale1(user,Match01,Match02,Match03,Match04,Matc
 
h05,Match06,Match07,Match08,date,Pays01,Pays02,Pay
 
s03,Pays04,Pays05,Pays06,Pays07,Pays08)
VALUES('$login '  
 
,$T2_M01_1,$T2_M02_1,$T2_M03_1,$T2_M04_1,$T2_M05_1
,
$T2_M06_1,$T2_M07_1,$T2_M08_1,NOW(),$T2_P1_1,$T2_P
2_1,
$T2_P3_1,$T2_P4_1,$T2_P5_1,$T2_P6_1,$T2_P7_1,$T2_P
8_1)";  
 
Exemple pour le login. A vérifier que d'autres champs ne sont pas dans le même cas  :D

 

[jfdsdjhfuetppo]--Message édité par Mara's dad le 22-05-2002 à 09:06:27--[/jfdsdjhfuetppo]


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 22-05-2002 à 09:19:13    

Merde... Je te confirme ça d'ici une heure...
 
Merci!  :sol:

Reply

Marsh Posté le 22-05-2002 à 12:16:04    

Yes, c cool.. Merci

Reply

Marsh Posté le 22-05-2002 à 12:22:57    

C'est une bonne idée aussi de protéger les chaines de caractères par la fonction addslashes. Au cas où il y aurait un ' dans la chaîne à insérer.

Reply

Marsh Posté le 22-05-2002 à 12:55:12    

mrbebert a écrit a écrit :

C'est une bonne idée aussi de protéger les chaines de caractères par la fonction addslashes. Au cas où il y aurait un ' dans la chaîne à insérer.  




 
pas besoin ça se fait automatiquement.


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 22-05-2002 à 14:13:26    

Sh@rdar a écrit a écrit :

 
 
pas besoin ça se fait automatiquement.  



:ouch:  
 
Essaie pour voir.
$txt = "bla'bla";
$req = "INSERT into table(champ) VALUES('$txt';);
Et dis moi si l'insertion fonctionne correctement.

Reply

Marsh Posté le 22-05-2002 à 15:32:28    

comme ça forcément que ça fonctionne pas mais quand le texte est saisi via un formulaire oui ça marche.
 
ton exemple est juste mais je vois pas l'intêret d'insérer des constantes dans une base de données...

 

[jfdsdjhfuetppo]--Message édité par Sh@rdar le 22-05-2002 à 15:33:24--[/jfdsdjhfuetppo]


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 22-05-2002 à 17:10:23    

Sh@rdar a écrit a écrit :

comme ça forcément que ça fonctionne pas mais quand le texte est saisi via un formulaire oui ça marche.
 
ton exemple est juste mais je vois pas l'intêret d'insérer des constantes dans une base de données...  



Justement non. Si ce sont des constantes, tu sais ce qu'il y a dedans. Mais si c'est un champ texte saisi par l'utilisateur, rien ne l'empêche de mettre des caractères bizarres. Qui feront planter ta requête.

Reply

Marsh Posté le 22-05-2002 à 17:10:23   

Reply

Marsh Posté le 22-05-2002 à 18:06:33    

je persiste et signe :
 
vérifies avec ça :
 
<?
echo $HTTP_POST_VARS["text"];
?>
<form method="post" action="<? echo $PHP_SELF ?>">
<input type="text" name="text" size="20">
<input type="submit" value="OK">
</form>
 
les quotes sont échappées automatiquement !
 
bien sur faudra traiter la chaine lors de l'affichage ultèrieur pour éviter le </body> etc... mais  y a pas besoin lors de la saisie / insertion dans la base.


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 22-05-2002 à 18:23:59    

Sh@rdar a écrit a écrit :

je persiste et signe :




vous battez pas vous acez tout les deux raisons, encore une fois cela dépend de la config php.ini (magic_quotes_gpc et magic_quotes_runtime)


---------------
...oups kernel error...
Reply

Sujets relatifs:

Leave a Replay

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