Я пытаюсь добавить членов в свою базу данных, используя OOP, однако он вставляет только значения NULL. Он прекрасно работает, когда я не использую OOP
Вот мой код PHP :
$request = $bdd->query('SELECT id_membre, prenom, nom, ville FROM client');
class Membre {
private $_id;
private $_prenom;
private $_nom;
private $_ville;
/*HYDRATATION*/
public function hydrate(array $donnees) {
foreach($donnees as $key => $value) {
$method = 'set'.ucfirst($key);
if (method_exists($this, $method)) {
$this->$method($value);
}
}
}
public function id() { return $this->_id; }
public function prenom() { return $this->_prenom; }
public function nom() { return $this->_nom; }
public function ville() { return $this->_ville; }
public function setId($id) {
$this->_id = $id;
}
public function setPrenom($prenom) {
$this->_prenom = $prenom;
}
public function setNom($nom) {
$this->_nom = $nom;
}
public function setVille($ville) {
$this->_ville = $ville;
}
}
Кажется, что эта часть работает нормально
class MembreManager {
private $_bdd;
public function __construct($bdd){
$this->setBdd($bdd);
}
public function add(Membre $mbr) {
$q = $this->_bdd->prepare("INSERT INTO client(prenom, nom, ville)
VALUES(:prenom, :nom, :ville)");
$q->bindValue(':prenom', $mbr->prenom());
$q->bindValue(':nom', $mbr->nom());
$q->bindValue(':ville', $mbr->ville());
$q->execute();
}
}
$mbr = new Membre([
'nom' => 'Name',
'prenom' => 'Surname',
'ville' => 'City',
]);
$manager = new MembreManager($bdd);
$manager->add($mbr);
while($donnees = $request->fetch()) {
$mbr = new Membre($donnees);
}
Кажется, что вставка значений работает, только когда я вручную ввожу строку в свой Insert Into.