[Besoin d'aide]: php dans requête SQL qui ne fonctionne pas

: php dans requête SQL qui ne fonctionne pas [Besoin d'aide] - PHP - Programmation

Marsh Posté le 14-05-2009 à 22:14:31    

Bonsoir,
 
Je veux inclure du php pour récupérer des variables dans une requête SQL...
 
quand j'essaye ça:
 

Code :
  1. $requete="INSERT INTO"$_POST['categorie']" ('titre','texte','monImage') VALUES ("$_POST['titre']","$_POST['texte']","$_POST['monImage']" )";


 
il me met une erreur de synthaxe, et quand j'essaye
 

Code :
  1. $requete="INSERT INTO '$_POST['categorie']' ('titre','texte','monImage') VALUES ('$_POST['titre']','$_POST['texte']','$_POST['monImage']')";


 
il me met Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\wamp\www\Site\ajouterArticle.php on line 38


Message édité par Sladix le 15-05-2009 à 15:10:24
Reply

Marsh Posté le 14-05-2009 à 22:14:31   

Reply

Marsh Posté le 15-05-2009 à 09:47:44    

essaye d'utiliser le . comme opérateur de concaténation.


Message édité par Deamon le 15-05-2009 à 09:47:59
Reply

Marsh Posté le 15-05-2009 à 11:40:25    

plusieurs choses :
-tu as oublié les guillemets simple qui entournent les chaine des champs mysql (une fois que PHP les aura insérés)
-il faut concaténer les variables avec le "." quand tu utilise des varaible du type $var["value"] (echo "coucou ".$var["value"].", ca va?"; ) , tu aurait pu t'en passer dans le cas de l'insertion dans une chaine d'une variable $var (echo "coucou $var ca va?"; )

 

donc :

 
Code :
  1. $requete="INSERT INTO ".$_POST['categorie']." ('titre','texte','monImage') VALUES ('".$_POST['titre']."','".$_POST['texte']."','".$_POST['monImage']."' )";
 


Message édité par bixibu le 15-05-2009 à 11:49:55

---------------
App Android NextGP - Calendrier, Notifications pour 12 sports meca : Playstore - TU
Reply

Marsh Posté le 15-05-2009 à 11:49:27    

Ha ouais et puis la tu est piratable à souhait...
 
faut proteger tes valeurs.. regarde la doc PHP du coté de mysql_real_escape_string entre autre


---------------
App Android NextGP - Calendrier, Notifications pour 12 sports meca : Playstore - TU
Reply

Marsh Posté le 15-05-2009 à 15:09:32    

Merci, bon, voilà le code de ma page:
 

Code :
  1. <html>
  2. <link rel="stylesheet" type="text/css" href="style.css">
  3. <div id="divLogin">
  4. <form method="post" action="ajouterArticle.php" enctype="text/plain">
  5. <select class="champ" name="categorie">
  6.  <option name="jeuxVideo">Jeux vidéo</option>
  7.  <option name="musique">Musique</option>
  8.  <option name="divers">Divers</option>
  9. </select><br/>
  10. Ajouter une image: <input class="champ" type="file"  name="monImage"/><br/>
  11. <input class="champ" value="Nom de la news" type="texte" name="titre"/>
  12. <br>
  13. <textarea class="champ"  type="text" name="texte">Tapez votre texte ici</textarea>
  14. <button class="boutton" type="submit">Envoyer</button>
  15. </form>
  16. </div>
  17. <?php
  18. if($_POST!= false)
  19. {
  20. $pdo =new PDO("mysql:host=localhost;dbname=site","root","" );
  21. $pdo_statement=$pdo->prepare("INSERTINTO ".$_POST['categorie']."('titre','texte','image') VALUES ('".$_POST['titre']."','".$_POST['texte']."','".$_POST['monImage']."')" );
  22. $pdo_statement->execute();
  23. }
  24. ?>
  25. </html>


 
 
Le problème maintenant c'est que quand je lance ça, il me met aucune erreur mais n'ajoute rien à la base de donnée O_o


Message édité par Sladix le 15-05-2009 à 15:11:42
Reply

Marsh Posté le 15-05-2009 à 15:54:54    

Rajoute entre les lignes 22-23 un echo "coucou !"; histoire de voir que tu rentres bien dans ton test (j'ai un doute sur le test, mais je ne connais pas assez bien php pour confirmer).  
 
Par ailleurs, il manque des espaces en ligne 24 dans ta requête, ce qui devait normalement provoquer une erreur (d'où le doute que le test se produise bien).  
 
La requête devrait ressembler davantage à :
"INSERT INTO ".$_POST['categorie']." ('titre','texte','image') VALUES ('".$_POST['titre']."','".$_POST['texte']."','".$_POST['monImage']."')"
 
 

Reply

Sujets relatifs:

Leave a Replay

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