Статическое соединение PDO - PullRequest
0 голосов
/ 20 мая 2019

Так как я изменил свои классы на статические и попытался изучить ООП. Мой PDO перестал работать.

Ребята, вы понимаете? Так как соединение PDO находится в DBconnect, это должно работать правильно?

Вот мой код:

<?php

Class Db{

    private static $dbHost;
    private static $dbUser;
    private static $dbPass;
    private static $dbName;
    private static $dbResult = null;
    public static $dbConnect = null;

    public static function connection(){

        self::$dbHost = '***';
        self::$dbUser = '***';
        self::$dbPass = '***';
        self::$dbName = '***';

        try{
            self::$dbConnect = new PDO('mysql:host='. self::$dbHost . ';dbname=' . self::$dbName,
                self::$dbUser,
                self::$dbPass);

        }catch(PDOException $e){
            echo 'Connection error: ' . $e->getMessage();
        }
    }

    public static function query($sql, $array = []){

        self::$dbResult = self::$dbConnect->prepare($sql);

        self::$dbResult->execute($array);

    }

    public static function getOne(){

        return self::$dbResult->fetch(PDO::FETCH_ASSOC);
    }

    public static function getAll(){

        return self::$dbResult->fetchAll(PDO::FETCH_ASSOC);
    }

    public static function getCount(){

        return self::$dbResult->rowCount();
    }

}

Uncaught Error: вызов функции-члена prepare () со значением NULL

1 Ответ

1 голос
/ 20 мая 2019

Согласно нашему расширенному обсуждению в комментариях, это связано с тем, что вы никогда не создаете $dbConnect, потому что вы не выполняете функцию, которая это делает (Db::connection()).

Просто запустите это где-нибудь, прежде чем пытаться использовать другие статические функции, и ваш код будет работать:

Db::connection();
Db::query(...);
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...