Ajouter un ligne dans une table MySQL en PHP

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour, je cherche à créer un formulaire qui permettrait de créer une ligne en PHP, e formulaire pourrait juste spécifier le nom de la ligne. Actuellement mon code d'insertion ressemble à çà :
if(isset($_POST['name'])){
		$bdd->execute('codeschool_fr','INSERT INTO categories (id, name) VALUES (NULL, \'$name\')');
	}
sachant que $bdd est déclarer plus haut et ne pose pas de problème car je l'utilise dans une autre partie du site. Mon "<form>" est coder ainsi :
<form method="post" action="index.php">
	<p>
	   <input type="text" name="name"   placeholder="Nom du sujet..." required/><br>
	   <input id="submit" type="submit" value="Ajouter le sujet" />
	</p>
	</form>

Je ne trouve pas l'erreur mais je peux vous donner l'erreur :
Fatal error: Uncaught Error: Call to undefined method PDO::execute() in /Tchekda/admin/index.php:18 Stack trace: #0 {main} thrown in /Tchekda/admin/index.php on line 18


--
Tchekda, le preneur de conseils

1 réponse

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    pdo::execute... sert à exécuter des requêtes préparées... la syntaxe que tu as essayer d'utiliser ne fonctionne pas à ma connaissance...

    Essaye comme ceci :
    //récupération "propre" des variables AVANT de les utiliser:
    $name = isset($_POST['name']) ? $_POST['name'] : NULL;
    
    if($name){
       // on prépare la requete et les variables
       $sql = "INSERT INTO categories ( name) VALUES ( :name)"
       $datas = array(":name"=>$name);
       //on execute la requete
       try{
          $prepare = $bdd->prepare($sql);
          $bdd->execute($datas);
       }catch(Exception $e){
         //en cas d'erreur dans la requete
         echo 'Erreur ! ' .$e->getMessage();
       }
    }
    
    


    Bien entendu.. pour que ça fonctionne... tu as inclus le fichier de connexion à ta bdd ?!

    1
    1. Utilisateur anonyme
       
      Merci de ta réponse mais une erreur survient :
      Fatal error: Uncaught Error: Call to undefined method PDO::execute() in /Tchekda/admin/index.php:26 Stack trace: #0 {main} thrown in /Tchekda/admin/index.php on line 26
      , la ligne 26 est la ligne 7 de ton code.
      PS : tu as oublié de point-virgule ligne 6
      J'ai réussi a faire un code mais je n'arrive pas à appliquer une variable :
      if(isset($_POST['name'])){
      		$sujet = $_POST['name'];
      		$bdd->exec('INSERT INTO categories (id, name) VALUES (NULL, \'$sujet\')');
      	}
      Car la ligne insérer à pour nom "$sujet" au lieu de sa valeur.
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Petite erreur de ma part :
      Le code c'est celui là :
      //récupération "propre" des variables AVANT de les utiliser:
      $name = isset($_POST['name']) ? $_POST['name'] : NULL;
      
      if($name){
         // on prépare la requete et les variables
         $sql = "INSERT INTO categories ( name) VALUES ( :name)";
         $datas = array(":name"=>$name);
         //on execute la requete
         try{
            $prepare = $bdd->prepare($sql);
            $prepare->execute($datas); //$prepare et non $bdd
         }catch(Exception $e){
           //en cas d'erreur dans la requete
           echo 'Erreur ! ' .$e->getMessage();
         }
      }
      
      0
    3. Utilisateur anonyme
       
      merci jordane45. Le code est fonctionnel.
      0