Ajouter un ligne dans une table MySQL en PHP

Résolu/Fermé
Utilisateur anonyme - 12 juin 2016 à 21:28
 Utilisateur anonyme - 13 juin 2016 à 20:50
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

A voir également:

1 réponse

jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
13 juin 2016 à 01:38
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
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
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
13 juin 2016 à 17:20
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
Utilisateur anonyme
13 juin 2016 à 20:50
merci jordane45. Le code est fonctionnel.
0