Bonsoir tt le monde
J'ai un probleme avec mon code j'ai une table grade qui a 2 column id et nom id et auto_increment
voila mon code
public function create(grade $grade){
$this->st=$this->pdo->prepare('insert into grade(id,nom)values(null,:nom)');
$this->st->bindvalue(':nom',$grade->getnom(),pdo::PARAM_STR);
$exe=$this->st->execute();
}
Je voudrais ajouter des donnee dans ma table.
Mais le probleme c que il me donne cette erreur Call to a member function prepare() on a non-object in C:\wamp\www\Application\grade\manager.php on line 11 je comprend pas pourquoi
eEt merci
Est ce que tu appelles ta méthode makes() pour initier la connexion sql ?
Si ce n'est pas le cas il est normal que $this->pdo ne soit pas une instance de PDO et que tu ne puisses pas utiliser prepare().
public function create(grade $grade){
$this->makes();
$this->st=$this->pdo->prepare('insert into grade(id,nom)values(null,:nom)');
$this->st->bindvalue(':nom',$grade->getnom(),pdo::PARAM_STR);
$exe=$this->st->execute();
}
Change ta fonction make en __construct
function __construct() {
$this->pdo=new pdo('mysql:host=localhost;dbname=gestion','root','');
}
La fonction est automatiquement appeler à chaque fois que tu instancis la classe.
Bonsoir,
Je ne sais pas si ça va régler ton problème, mais par conventions on met "INSERT" en majuscule.
Bonsoir,
Puisque id est en "auto-increment", il n'est pas nécessaire de le renseigner dans la requête car la tu le force à null.
D'après ton erreur, tu n'as pas de fonction prepare donc pas de pdo.
Comment renseignes-tu "$this->pdo" ?
<?php
include 'class.php';
class manager{
private $pdo;
private $st;
public function makes(){
$this->pdo=new pdo('mysql:host=localhost;dbname=gestion','root','');
}
public function create(grade $grade){
$this->st=$this->pdo->prepare('insert into grade(id,nom)values(null,:nom)');
$this->st->bindvalue(':nom',$grade->getnom(),pdo::PARAM_STR);
$exe=$this->st->execute();
}
}
?>
Voila ma classe manager qui gere la classe grade
es-tu sur que "$this->pdo" est renseigné et pas vide.
que donnes un ceci juste avant de faire le prepare :
var_dump($this->pdo);
j'ai tester meme resultat.
voila ma class grade
<?php
class grade{
private $id;
private $nom;
public function getid(){
return $this->id;
}public function setnom($nom){
$this->nom=$nom;
return $this;
}
public function getnom(){
return $this->nom;
}
}
?>
L'erreur est assez clair. il ne trouve pas prepare() dans l'objet (l'objet pdo en l'occurence). donc faut regarder ce que vaut ton pdo et bien l'instancier.
tu as bien l'extension pdo d'installé pour ton PHP ?