Bonjour tout le monde,

j'ai un problème de débutant, et vous pourrez sûrement m'aider.

C'est un test. J'ai une méthode

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
	public function add(Personnages $perso)
  {
    $q = $this->_db->prepare("INSERT INTO personnages (nom, degats, force) VALUES(:nom, :degats, :force)");
    $q->execute(array(
	'nom'=>$perso->nom(),
	'degats'=>$perso->degats(),
	'force'=>$perso->force()
 
   ));
Puis

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
$manager=new PersonnagesManager($db);
$perso=new Personnages(array(
'nom'=>'Le perso',
'force'=>80
));
echo 'Le personnage '.$perso->nom().' a '.$perso->force().' en force';
 
$manager->add($perso);
Ma table se compose de 4 champs "id" "nom" "degats" et "force".

L'objet est bien hydraté, la fonction echo renvoie bien la valeur des attributs, aucun souci, mais la fonction add() ne fonctionne pas correctement.

Le seul moyen de la faire fonctionner, c'est sous cette forme:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
 $q = $this->_db->prepare("INSERT INTO personnages VALUES('', :nom, :degats, :force)");
Dans ce cas, ça marche, mais étant donné que c'est un test que je fais pour apprendre/progresser, j'aimerais surtout comprendre pourquoi l'autre forme (en haut de page) ne fonctionne pas, pourtant elle me paraît juste.