Задать вопрос
@Kristina8787

Почему выдает ошибку Call to a member function prepare() on null?

Доброго времени суток. Столкнулась с проблемой, очень простой код, но почему то выдает ошибку и не возвращает результат запроса, уже час луплю в экран,а ошибку найти не могу, вот файл подключения к БД и метод внутри него query
namespace App;

class Db
{
  protected $dbh;

  public function __construct()
  {
    $config = (include __DIR__.'/../config.php')['db'];
    $options = [
      \PDO::ATTR_ERRMODE  => \PDO::ERRMODE_EXCEPTION,
      \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
      \PDO::ATTR_EMULATE_PREPARES => false,
    ];
    $dsn = 'mysql:host=' . $config['host'] .'; dbname=' . $config['dbname'];
    $this->$dbh = new \PDO($dsn, $config['login'], $config['password'], $options);
  }

  public function query(string $sql, array $data = [])
  {
    $sth = $this->dbh->prepare($sql);
    $sth->execute($data);
    return $sth->fetchAll();
  }


}


затем на главной проверяю работоспособность такого банального и простого метода

require_once __DIR__.'/autoload.php';

$db = new \App\Db();


$data = $db->query('SELECT * FROM about');
var_dump($data);


в итоге получаю ошибку Fatal error: Uncaught Error: Call to a member function prepare() on null in Db.php:22
Само подключение создается, ошибок нет.
  • Вопрос задан
  • 8338 просмотров
Подписаться 1 Простой 8 комментариев
Решения вопроса 1
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
$this->$dbh

$this->dbh

найди 5 отличий

А если соединение с базой не произойдет по какой-то еще причине будет тоже самое.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы