Страница 1 из 3

Не работает pdo(

Добавлено: 08 окт 2016, 21:44
Magnum
Здравствуйте мастера.
Установил опенсервер, пытаюсь подключиться к бд, но получаю ошибку. При том, что данные верны, перед подключением средством pdo, протестировал всё в mysqli.

Ошибку, которую я получаю:
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();

?>

Подскажите пожалуйста, в чём может быть проблема(

Re: Не работает pdo(

Добавлено: 08 окт 2016, 22:16
Magnum
Или как можно проверить работоспособность пдо?

Re: Не работает pdo(

Добавлено: 08 окт 2016, 23:04
Ink0gnit0
Во-первых, проверьте корректен ли пароль для пользователя "root". Во-вторых, разрешено ли ему подключение из localhost. Ну и в-третьих,
$this->dsn = "mysql:host=".DB_SERVER.";dbname=".DB_NAME.";charset=UTF8";

Re: Не работает pdo(

Добавлено: 08 окт 2016, 23:14
Magnum
Ink0gnit0 писал(а):Во-первых, проверьте корректен ли пароль для пользователя "root". Во-вторых, разрешено ли ему подключение из localhost. Ну и в-третьих,
$this->dsn = "mysql:host=".DB_SERVER.";dbname=".DB_NAME.";charset=UTF8";
писал выше, что данные проверял перед этим, всё верно.
Кодировку проверял и так и так, тоже не катит
А как можно проверить, разрешено ли ему подключение из localhost?

Re: Не работает pdo(

Добавлено: 08 окт 2016, 23:32
Ink0gnit0
mysql --user=root --password=111111 --database=mysql --execute="select host from user where user='root';"
Присутствует ли в таблице значение "localhost" и/или "%"?

Re: Не работает pdo(

Добавлено: 08 окт 2016, 23:40
Максим
PDO прекрасно работает. А вот то, что вы не знаете какой пароль или права доступа установили сами для root пользователя, это уже совсем другой вопрос.

Re: Не работает pdo(

Добавлено: 08 окт 2016, 23:46
Magnum
Максим писал(а):PDO прекрасно работает. А вот то, что вы не знаете какой пароль или права доступа установили сами для root пользователя, это уже совсем другой вопрос.
Я ничего не устанавливал, всё стояло по дефолту, и в первый раз столкнулся с такой проблемой.
При работе с mysqli такого не возникало

Re: Не работает pdo(

Добавлено: 08 окт 2016, 23:51
Максим
По дефолту пароля нет, а вы его зачем-то используете. О чём еще можно говорить. Разбирайтесь.

Re: Не работает pdo(

Добавлено: 08 окт 2016, 23:51
Magnum
Ink0gnit0 писал(а):
mysql --user=root --password=111111 --database=mysql --execute="select host from user where user='root';"
Присутствует ли в таблице значение "localhost" и/или "%"?

И правда, создал нового пользователя, с новыми правами, всё заработало, спасибо;)
Просто до конца не разбирался с администрированием phpmyadmin, потому не особо старался что-то настраивать и менять. Работало и работало)

Re: Не работает pdo(

Добавлено: 01 мар 2018, 02:56
nGreg
Приветствую всех и каждого. Охотно верю, что PDO прекрасно работает, но у меня не желает ни в какую! Локальная база подключается и через mysql, и через mysqli. Прописываю подключение через PDO и получаю белый экран. Отладчик показывает, что объект создан и содержит в себе массив со значением ноль. Логи sql-запросов тоже говорят, что коннект успешный. Ни с именами базы данных, ни с паролями я ничего не напутал. Менял версии модулей в настройке, тоже самое. Возвращается пустой массив...