Pb SQL / Php - PHP - Programmation
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).
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
[jfdsdjhfuetppo]--Message édité par Mara's dad le 22-05-2002 à 09:06:27--[/jfdsdjhfuetppo]
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.
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.
Marsh Posté le 22-05-2002 à 14:13:26
Sh@rdar a écrit a écrit : pas besoin ça se fait automatiquement. |
Essaie pour voir.
$txt = "bla'bla";
$req = "INSERT into table(champ) VALUES('$txt';
Et dis moi si l'insertion fonctionne correctement.
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]
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.
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.
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)
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