Неустранимая ошибка: вызов функции-члена prepare () для null, соединение установлено правильно

В настоящее время я делаю кому-то вход в систему, и когда я нажимаю кнопку входа, на моем экране появляется следующее:

Fatal error: Call to a member function prepare() on null in /Applications/XAMPP/xamppfiles/htdocs/application/classes/users.php on line 37

Вот что происходит в этой области этого файла:

public static function login() // 32
{ // 33
$username = $_POST['username']; // 34
$password = $_POST['password']; // 35
$query = self::$connection->prepare('SELECT * FROM users WHERE username = :username'); // 36
$query->execute(array(':username' => $username)); // 37

Ничего странного там нет. self::$connection Элемент от моего конструктора:

 public function __construct()
{
self::$connection = Core\Database::connect();
}

И да, я сделал Use DeGier\Core;

Файл базы данных довольно прост:

public static function connect()
{
try
{
self::$conn = new \PDO('mysql:hostname=localhost;charset=utf8;dbname=degieradmin;', 'root', ********);
self::$conn->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);
self::$conn->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
}
catch (\PDOException $e)
{
throw new \PDOException('PDO error:' . $e->getMessage());
}
return self::$conn;
}

Я сделал все основные вещи;

  • Я проверил, включен ли MySQL,
  • Я проверил, если детали подключения БД, где правильно,
  • Я проверил, существует ли эта конкретная БД.
  • Я проверил, был ли файл читаемым.

Я не мог найти ничего плохого.

Так как же получается, что такие вещи обычно работают, но на этот раз это не так?

0

Решение

Вы устанавливаете свою статическую переменную, соединение с базой данных, в конструкторе вашего класса.

Однако конструктор запускается только тогда, когда создается объект этого класса.

Так что вам не следует делать это там, если вы не абсолютно уверены, что самое первое, что вы делаете, это создаете экземпляр вашего объекта.

Вы должны инициализировать свою базу данных где-то еще и / или проверить в своем методе входа, установлена ​​ли она.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]