За последние 24 часа нас посетили 16914 программистов и 1704 робота. Сейчас ищут 852 программиста ...

не могу к MySQL подключиться

Тема в разделе "PHP для новичков", создана пользователем xfreewindx, 4 сен 2012.

  1. xfreewindx

    xfreewindx Активный пользователь

    С нами с:
    22 фев 2012
    Сообщения:
    55
    Симпатии:
    0
    Здравствуйте!
    Подскажите пожалуйста, я через PDO подключаюсь к MySQL. На денвере работает нормально. Там пользователь root без пароля. Выложил на хостинг. Выбрасывается эксепшн, не могу подключиться к БД
    SQLSTATE[28000] [1045] Access denied for user 'fr9526'@'localhost' (using password: YES)
    Параметры доступа вроде все правильно прописал, логин, пароль, localhost. Попробовал локально на Open-Server вместо денвера, тот же эксепшн, естесственно логин и пароль другие задал. Что-то я в MySQL не докрутил?
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Скрипт-коды есть, что пишите?
    Где это происходит?
     
  3. xfreewindx

    xfreewindx Активный пользователь

    С нами с:
    22 фев 2012
    Сообщения:
    55
    Симпатии:
    0
    метод, отвечающий за подключения к БД
    Код (Text):
    1. private function dbConnect() {
    2.         // подключаем конфигурацию базы данных
    3.         require_once('m/db_config.php');
    4.  
    5.         // подключаемся к БД
    6.         try {
    7.             $dbh = new PDO("mysql:dbname={$dbname}; host={$hostname}", $username, $password);
    8.             if (empty($dbh))
    9.                 throw new PDOException;
    10.  
    11.             return $dbh;
    12.         } catch (PDOException $e) {
    13.             die('Ошибка соединения с БД: ' . $e->getMessage());
    14.         }
    15.     }
    в файле db_config.php переменные с параметрами доступа
    типа $hostname = 'localhost'; $password = 'password'; и т.д.

    попробовал выложить на бесплатный хостинг timeweb. Пароль и имя БД задал в админке, вроде нигде не ошибся в паролях. Странно что на денвере работает, а на таком же локальном сервере open-server также эксепшн выбрасывает, хотя тоже логин root без пароля, по крайней мере когда входишь phpAdmin это видно.
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    А без функций и трайкетчей пробовали в отдельном файле сделать скрипт и вывести?
     
  5. xfreewindx

    xfreewindx Активный пользователь

    С нами с:
    22 фев 2012
    Сообщения:
    55
    Симпатии:
    0
    Попробовал без try - catch.
    Код (Text):
    1. $dbh = new PDO("mysql:dbname={$dbname}; host={$hostname}", $username, $password);
    Почему-то вместо $username, $password стоит NULL и вываливается ошибка о непойманном исключении.
    Почему-то не отрабатывает конструкция
    Код (Text):
    1. require_once('m/db_config.php');
    внутри функции. Надо выносить в другое место?
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    сталобыть в db_config.php на хоcтинге у тебя не заданы эти переменные?
    если бы файл вообще не нашелся, то require вызвал бы фатальную ошибку, a.f.a.i.k.

    Добавлено спустя 3 минуты 9 секунд:
    а вообще безопаснее писать так:
    Код (PHP):
    1. require __DIR__.'/m/db_config.php';
    2.  
    иначе неоднозначно в какой именно папке лежит нужный файл. (timeweb уже перешел на PHP 5.3 насколько я знаю, значит __DIR__ уже определена)
     
  7. xfreewindx

    xfreewindx Активный пользователь

    С нами с:
    22 фев 2012
    Сообщения:
    55
    Симпатии:
    0
    спасибо.