PHP/SQL $_POST dans un INSERT INTO [Résolu/Fermé]

Signaler
Messages postés
189
Date d'inscription
mercredi 24 décembre 2008
Statut
Membre
Dernière intervention
19 septembre 2013
-
servietsky777
Messages postés
189
Date d'inscription
mercredi 24 décembre 2008
Statut
Membre
Dernière intervention
19 septembre 2013
-
Bonjour,
J'essaie de faire fonctionner ce code mais je n'y arrive pas..

$bdd->exec('INSERT INTO comment(comment) VALUES($_POST['comment']) ');

J'espère que vous pourrez m'aider.

Merci d'avance

Bonne journée

7 réponses

Messages postés
189
Date d'inscription
mercredi 24 décembre 2008
Statut
Membre
Dernière intervention
19 septembre 2013
7
oui si je fait echo $_POST['comment'] sa affiche.


L'erreur de la page avec le INSERT INTO c'est:

Parse error: syntax error, unexpected T_STRING in /data/web/5/1/monsite.org/htdocs/comment.php on line 22

La ligne 22 donc la ligne oú il y a le INSERT INTO.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 83329 internautes nous ont dit merci ce mois-ci

Messages postés
1565
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
179
Salut,

si $_POST['comment'] est une string, ne pas oublier les guillemets !

 $bdd->exec('INSERT INTO comment(comment) VALUES \'.$_POST['comment'].'\' '); 
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 83329 internautes nous ont dit merci ce mois-ci

Meoran
Messages postés
1565
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
179
Non ma modif est bonne j'en suis certain, l'erreur viens d'ailleurs...

Tu utilises bien PDO ?
servietsky777
Messages postés
189
Date d'inscription
mercredi 24 décembre 2008
Statut
Membre
Dernière intervention
19 septembre 2013
7
Oui si je met autre chose que $_POST sa foncionne très bien.
Meoran
Messages postés
1565
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
179
Fait un truc du genre :

$comment = $_POST['comment'];  

 $bdd->exec('INSERT INTO comment(comment) VALUES \''.$comment.'\''); 


Mais je suis pas convaincu :/
servietsky777
Messages postés
189
Date d'inscription
mercredi 24 décembre 2008
Statut
Membre
Dernière intervention
19 septembre 2013
7
ça fonctionne pas :/
Meoran
Messages postés
1565
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
179
Oui il fallait s'en douter...

Pour le besoin du débogage :

$Requête = ('INSERT INTO comment(comment) VALUES \'.$_POST['comment'].'\' ');  

echo $Requête;


EDIT : je viens d'y penser, il faut échapper ton commentaire.

Si tu es sous mysql, c'est avec :
mysql_real_escape_string($_POST['comment'])
Messages postés
7791
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
21 mai 2016
900
il y a bien une valeur dans ton POST ?
Messages postés
7791
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
21 mai 2016
900
tu t'es trompé dans tes cotes, c'est un double guillemet qu'il faut :

$bdd->exec("INSERT INTO comment(comment) VALUES($_POST['comment']) ");
Messages postés
189
Date d'inscription
mercredi 24 décembre 2008
Statut
Membre
Dernière intervention
19 septembre 2013
7
Avec les double guillemets j'ai:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /data/henry/web/5/1/buddhashop.toile-libre.org/htdocs/comment.php on line 22
Templier Nocturne
Messages postés
7791
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
21 mai 2016
900
et si tu vire le POST de ta requête en remplaçant par une autre variable ?
$lala = 'lala';
$bdd->exec("INSERT INTO comment(comment) VALUES($lala) ");  
servietsky777
Messages postés
189
Date d'inscription
mercredi 24 décembre 2008
Statut
Membre
Dernière intervention
19 septembre 2013
7
Tu veux dire quelque chose comme ça?

$temp = $_POST['comment'];
$bdd->exec("INSERT INTO comment(comment, date) VALUES($temp, NOW()) ");
Templier Nocturne
Messages postés
7791
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
21 mai 2016
900
oui, par exemple, mais si ça ne marche pas, essaye avec une variable définie "normalement" ($lala = 'lala')
servietsky777
Messages postés
189
Date d'inscription
mercredi 24 décembre 2008
Statut
Membre
Dernière intervention
19 septembre 2013
7
ça sa ne marche pas..

$temp = $_POST['comment'];
$bdd->exec("INSERT INTO comment(comment, date) VALUES($temp, NOW()) ");
Messages postés
189
Date d'inscription
mercredi 24 décembre 2008
Statut
Membre
Dernière intervention
19 septembre 2013
7
Merci beaucoup pour toutes les réponses.

Une autre idée? Parce que jusque là rien ne fonctionne..
Meoran
Messages postés
1565
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
179
Le code est bien sur la page comment.php ?

L'erreur est située ailleurs, et je pense même sur une autre page...

A quelle ligne est située le exit ?

Si avant 22, alors c'est sur que l'erreur est sur une autre page (sur la page comment.php par exemple ?). Sinon, c'est possible que ce soit ailleurs.

Utilise les exit, echo, print_r pour situer précisément un bug dont tu n'arrives pas à déterminer sa provenance.
servietsky777
Messages postés
189
Date d'inscription
mercredi 24 décembre 2008
Statut
Membre
Dernière intervention
19 septembre 2013
7
Le code est bien sur la page comment.php ?
OUI

L'erreur est située ailleurs, et je pense même sur une autre page...
non

A quelle ligne est située le exit ?
24

Si avant 22, alors c'est sur que l'erreur est sur une autre page (sur la page comment.php par exemple ?). Sinon, c'est possible que ce soit ailleurs.
L'erreur est sur la page comment.php

Utilise les exit, echo, print_r pour situer précisément un bug dont tu n'arrives pas à déterminer sa provenance.


L'erreur vient précisément du $_POST['comment'] car si je met autre chose que ça, par exemple \'test mot\' ,ça marche.
Meoran
Messages postés
1565
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
179
Utilises tu les exceptions avec PDO ?

Essaye ceci (mais j'aime pas parce que pas propre ) :

 $bdd->exec("INSERT INTO comment(comment) VALUES  '$_POST['comment']\' ");
servietsky777
Messages postés
189
Date d'inscription
mercredi 24 décembre 2008
Statut
Membre
Dernière intervention
19 septembre 2013
7
je vois pas ce que ça change mais ça fonctionne pas non plus
Templier Nocturne
Messages postés
7791
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
21 mai 2016
900
j'vais peut être faire noob, mais pour ma part, j'évite toujours les variables de tableau dans mes requetes... ça évite les erreurs d'innatention ;)


$bdd->exec("INSERT INTO comment(comment) VALUES '$_POST['comment']\' ");

là, je pense pas que ça marche...

$comment = $_POST['comment'];
$bdd->exec("INSERT INTO comment(comment) VALUES '$comment' ");
Messages postés
189
Date d'inscription
mercredi 24 décembre 2008
Statut
Membre
Dernière intervention
19 septembre 2013
7
Hello,
J'ai denouveau le même problème avec le WHERE.

Mon code:

$reponse = $bdd->query('SELECT user, password FROM compte WHERE user= :user');
$prep->bindValue(':user', $_POST['user'], PDO::PARAM_STR);
$donnees = $reponse->fetch();
if($_POST['password'] == $donnees['password']){
echo 'test';
}