Почему pdo query select возвращает null?

441
11 февраля 2017, 10:06

Есть класс подключения к базе данных:

class Mydb
{
    protected $db;
    public function __construct()
    {
        try {
            $this->db = new PDO('mysql:host=localhost;dbname=mydb', 'root', '');
        } catch (PDOException $e) {
            exit($e->getMessage());
        }
    }
}

И два класса-наследника: для добавления данных в базу

class AddData extends Mydb
{
    public function addInfo($name, $tel, $email)
    {
        $this->db->exec("INSERT INTO users (name, tel, email) VALUES ('$name', '$tel', '$email'");
    }
}

и для получения из базы

class GetData extends Mydb
{
    public function getInfo()
    {
        $this->db->query("SELECT * FROM users");
    }
}

Объект класса AddData со своей функцией справляется отлично:

$add = new AddData();
$add->addInfo('Vasya', '(495) 123-45-67', 'vas@ya.ru');

А вот объект класса GetData почему-то возвращает NULL:

$get = new GetData();
$res = $get->getInfo();
var_dump($res); //NULL

Причём если $this->db->query("SELECT * FROM users"); поместить в конструктор родительского класса, то всё работает. А через класс-наследник - нет.

В чём здесь проблема и как её решить?

Answer 1

Я не знаю, где выучились писать классы, то что написано в вопросе - это страшнее атомной войны.

"класс" Mydb выкинуть на помойку, остальные объединить в один.

class User
{
    public function __construct($pdo) {
        $this->db = $pdo;
    }
    public function add()
    {
        $sql = "INSERT INTO users (name, tel, email) VALUES (?,?,?)";
        $this->db->prepare($sql)->execute($name, $tel, $email);
    }
    public function getAll()
    {
        return $this->db->query("SELECT * FROM users")->fetchAll();
    }
}

использовать так

$pdo = new PDO('mysql:host=localhost;dbname=mydb', 'root', '', [3 => 2]);
$user = new User($pdo);
$res = $user->getAll();
var_dump($res); //NULL
READ ALSO
Максимальное кол-во айдишников в WHERE IN(…)

Максимальное кол-во айдишников в WHERE IN(…)

Есть запрос, и в нем использую порядка 500 айдишников, перечисленных в IN

364
Сравнение больших массивов в PHP

Сравнение больших массивов в PHP

ПриветствуюЕсть такая задача

459
Путаются посты при добавлении wp_insert_post

Путаются посты при добавлении wp_insert_post

БредОбъясните, пожалуйста, почему так?

314