@fomenko_alexandr

Почему не работает pdo?

Здравствуйте. Начал изучать ооп, и одновременно с ним, пдо.
Пытаюсь написать класс подключения к бд, но возникает ошибка.

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES)' in C:\OpenServer\domains\oop\includes\db_connects.php:16 Stack trace: #0 C:\OpenServer\domains\oop\includes\db_connects.php(16): PDO->__construct('mysql:host=loca...', 'root', '111111', Array) #1 C:\OpenServer\domains\oop\public\index.php(7): MySQLDatabase->__construct() #2 {main} thrown in C:\OpenServer\domains\oop\includes\db_connects.php on line 16

<?php

include 'config.php';
//содержимое config.php
//defined('DB_SERVER')  ? null : define('DB_SERVER', 'localhost');
//defined('DB_USER')    ? null : define('DB_USER', 'root');
//defined('DB_PASS')    ? null : define('DB_PASS', '111111');
//defined('DB_NAME')    ? null : define('DB_NAME', 'oop');

class MySQLDatabase {
    private $dsn;
    private $opt = array();
    private $db;

    function __construct() {
        $this->dsn = "mysql:host=".DB_SERVER.";dbname=".DB_NAME.";charset='UTF-8'";
        $this->opt = array(
            PDO::ATTR_ERRMODE               => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE    => PDO::FETCH_ASSOC
        );
        $this->db = new PDO($this->dsn, DB_USER, DB_PASS, $this->opt);
    }
}

$connection = new MySQLDatabase();

?>


Помогите пожалуйста разобраться с вопросом(
  • Вопрос задан
  • 3244 просмотра
Пригласить эксперта
Ответы на вопрос 4
alsopub
@alsopub
Access denied for user 'root'@'localhost' (using password: YES) - не подходит пароль к БД.
Ответ написан
Комментировать
Ходить в базу под пользователем "root" не секурно. Вы уверены, что пароль от пользователя "root" - 111111
Ответ написан
Комментировать
@fomenko_alexandr Автор вопроса
Да, это на локалке я проверяю. Там данные root:111111, ну или просто под root:и пустым паролем
Но перед написанием класса с подключением на пдо, проверил подключение к базе на mysqli, всё работает, так что данные 100% верные

Может я что-то не так в конструкции класса выполняю?

Проверял на хостинге, с валидными данными, там была ошибка:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2019] Can't initialize character set 'UTF8' (path: /usr/share/mysql/charsets/)' in /var/www/kitlhin/data/www/kit.lh1.in/test.php:16 Stack trace: #0 /var/www/kitlhin/data/www/kit.lh1.in/test.php(16): PDO->__construct('mysql:host=loca...', 'kit_root', 'Fqwer1A123a', Array) #1 /var/www/kitlhin/data/www/kit.lh1.in/test.php(20): MySQLDatabase->__construct() #2 {main} thrown in /var/www/kitlhin/data/www/kit.lh1.in/test.php on line 16
Ответ написан
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Вместо UTF-8 попробуйте utf8
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы