Логотип   Простое и понятное управление
  Уникальные возможности по настройке
  Open Server скачали уже 1 021 161 раз!

Форум

Добро пожаловать, Гость!

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

Вопросы по работе с Apache, Nginx, PHP, MySQL, Sendmail и т.д.
Magnum
Сообщения: 5
C нами: 2 мес

Непрочитанное сообщение Magnum » 08 окт 2016, 21:44

Здравствуйте мастера.
Установил опенсервер, пытаюсь подключиться к бд, но получаю ошибку. При том, что данные верны, перед подключением средством 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();

?>



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

Magnum
Сообщения: 5
C нами: 2 мес

Непрочитанное сообщение Magnum » 08 окт 2016, 22:16

Или как можно проверить работоспособность пдо?

Аватара пользователя
Ink0gnit0
Сообщения: 23
C нами: 3 года 8 мес

Непрочитанное сообщение Ink0gnit0 » 08 окт 2016, 23:04

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

Magnum
Сообщения: 5
C нами: 2 мес

Непрочитанное сообщение Magnum » 08 окт 2016, 23:14

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

писал выше, что данные проверял перед этим, всё верно.
Кодировку проверял и так и так, тоже не катит
А как можно проверить, разрешено ли ему подключение из localhost?

Аватара пользователя
Ink0gnit0
Сообщения: 23
C нами: 3 года 8 мес

Непрочитанное сообщение Ink0gnit0 » 08 окт 2016, 23:32

mysql --user=root --password=111111 --database=mysql --execute="select host from user where user='root';"


Присутствует ли в таблице значение "localhost" и/или "%"?

Аватара пользователя
Максим
Cейчас: в сети
Сообщения: 4877
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 08 окт 2016, 23:40

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

Magnum
Сообщения: 5
C нами: 2 мес

Непрочитанное сообщение Magnum » 08 окт 2016, 23:46

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


Я ничего не устанавливал, всё стояло по дефолту, и в первый раз столкнулся с такой проблемой.
При работе с mysqli такого не возникало

Аватара пользователя
Максим
Cейчас: в сети
Сообщения: 4877
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 08 окт 2016, 23:51

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

Magnum
Сообщения: 5
C нами: 2 мес

Непрочитанное сообщение Magnum » 08 окт 2016, 23:51

Ink0gnit0 писал(а):
mysql --user=root --password=111111 --database=mysql --execute="select host from user where user='root';"


Присутствует ли в таблице значение "localhost" и/или "%"?



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


Вернуться в «Модули и инструменты»

Кто сейчас на конференции

Сейчас этот форум просматривают: Yahoo [Bot] и 0 гостей