PDO FETCH_INTO $ этот класс не работает

Я хочу заполнить класс конструктором, используя FETCH_INTO PDO:

 class user { private $db; private $name; function __construct($id) { $this->db = ...; $q = $this->db->prepare("SELECT name FROM users WHERE id = ?"); $q->setFetchMode(PDO::FETCH_INTO, $this); $q->execute(array($id)); echo $this->name; } } 

Это не работает. Нет ошибки, просто ничего. У FETCH_ASSOC нет ошибок, FETCH_ASSOC отлично работает.

Что случилось с FETCH_INTO ?

Solutions Collecting From Web of "PDO FETCH_INTO $ этот класс не работает"

В вашем коде две ошибки:

1) Вы забыли $ q-> fetch ()

  ... $q->execute(array($id)); $q->fetch(); // This line is required 

2) Но даже после добавления $ q-> fetch () вы получите следующее:

Неустранимая ошибка: не удается получить доступ к частной собственности User :: $ name in …

Итак, как вы можете видеть, PDO не может обращаться к закрытым членам, даже если он вызван внутри класса.

Вот мое решение:

 ... $q->execute(array($id)); $q->setFetchMode(PDO::FETCH_ASSOC); $data = $q->fetch(); foreach ($data as $propName => $propValue) { // here you can add check if class property exists if you don't want to // add another properties with public visibility $this->{$propName} = $propValue; }