За последние 24 часа нас посетили 18115 программистов и 1599 роботов. Сейчас ищут 873 программиста ...

Ошибка подключения к базе данных

Тема в разделе "PHP для новичков", создана пользователем Rumato, 10 июл 2011.

  1. Rumato

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

    С нами с:
    26 дек 2010
    Сообщения:
    77
    Симпатии:
    0
    Здравствуйте, помогите, пожалуйста разобраться и найти ошибку. Ниже перечисленные скрипты выдают такую ошибку:
    Код (Text):
    1.  
    2. Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\php\PEAR\Config.php on line 80
    3.  
    4. Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\php\PEAR\Config.php on line 166
    5.  
    6. Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\php\PEAR\Config\Container.php on line 111
    7.  
    8. Notice: Undefined property: Db::$DB_HOST in C:\xampp\htdocs\config\db.php on line 14
    9.  
    10. Notice: Undefined property: Db::$DB_USER in C:\xampp\htdocs\config\db.php on line 15
    11.  
    12. Notice: Undefined property: Db::$DB_NAME in C:\xampp\htdocs\config\db.php on line 16
    13.  
    14. Notice: Undefined property: Db::$DB_NAME in C:\xampp\htdocs\config\db.php on line 20
    15. Database selection failed: No database selected

    файл config.php:
    Код (Text):
    1.  
    2. <?php
    3.     class Config {
    4.         var $BASE_URL = "127.0.0.1";
    5.         var $DB_HOST = "localhost";
    6.         var $DB_USER = "root";
    7.         var $DB_PASS = "123";
    8.         var $DB_NAME = "myprogect";
    9.     }
    10.  
    11.  
    12. ?>
    файл db.php:
    Код (Text):
    1.  
    2. <?php
    3.     require_once "config.php" ;
    4.  
    5.     class Db extends Config {
    6.  
    7.         private $connection ;
    8.  
    9.         function __construct() {
    10.             $this->open_connection() ;
    11. //          echo "Connection is set" ;
    12.         }
    13.  
    14.         private function open_connection() {
    15.             $this->connection = mysql_connect($this->DB_HOST,
    16.             $this->DB_USER,
    17.             $this->DB_NAME) ;
    18.             if(!$this->connection) {
    19.                 die("Database connection failed: " . mysql_error()) ;
    20.             } else {
    21.                 $db_select = mysql_select_db($this->DB_NAME) ;
    22.                 if(!$db_select) {
    23.                     die("Database selection failed: " . mysql_error()) ;
    24.                 }
    25.             }
    26.             mysql_query("set names utf8") or die("set names utf8 failed") ;
    27.         }
    28.  
    29.         public function sql($query) {
    30.             $result = mysql_query($query, $this->connection) ;
    31.             if(!$result) {
    32.                 die("Database query failed: " .mysql_error()) ;
    33.             }
    34.             return $result ;
    35.         }
    36.     }
    37.  
    38.     $Db = new Db() ;
    39. ?>
    файл mmenu.php
    Код (Text):
    1.  
    2. <?php
    3.     require_once "../config/db.php";
    4.    
    5.     class Mmenu extends Db {
    6.         function return_menu() {
    7.             $sql = "select menu_name from pages";
    8.             $res = $this->sql($sql);
    9.             return $res;
    10.         }
    11.     }
    12. ?>
    когда к файлу mmenu.php перехожу вылазит выше написанная ошибка, перепроверил всё на несколько раз, все параметры подключения правильны, подскажите в чем косяк.

    Заранее искренне благодарен.
     
  2. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Rumato

    Как я вижу - у тебя вместо твоего файла config.php грузится файл config.php из PEAR

    Попробуй переименуй в connection.php например.
     
  3. Rumato

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

    С нами с:
    26 дек 2010
    Сообщения:
    77
    Симпатии:
    0
    tommyangelo
    большое спасибо, дело было и вправду в названии файла, переименовал - заработало, только вот теперь я не могу понять
    Код (Text):
    1.  
    2. Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: YES) in C:\xampp\htdocs\my\config\db.php on line 16
    3. Database connection failed: Access denied for user 'root'@'localhost' (using password: YES)
    Это ошибка, которая теперь появляется, всё проверил - вроде правильно, не подскажите в чём теперь-то проблема?))
     
  4. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Rumato

    Ну а что непонятного? Пароль от mysql неверный.
     
  5. Rumato

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

    С нами с:
    26 дек 2010
    Сообщения:
    77
    Симпатии:
    0
    да в том-то и дело, что пароль правильный, я и вообще без пароля пробовал - всё тоже
     
  6. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    когда через phpmyadmin заходишь тоже такой пароль вводишь?
     
  7. Rumato

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

    С нами с:
    26 дек 2010
    Сообщения:
    77
    Симпатии:
    0
    да, вот например как прописано в config.inc.php только когда захожу вообще пароль не спрашивает, сразу переходит в панель администрирования

    Код (Text):
    1. $cfg['Servers'][$i]['user'] = 'root';
    2. $cfg['Servers'][$i]['password'] = '123';
    сейчас попробую на каком-нибудь другом сервере запустить, возможно, что-то с xampp-ом[/code]
     
  8. Rumato

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

    С нами с:
    26 дек 2010
    Сообщения:
    77
    Симпатии:
    0
    в денвере всё тоже самое, в phpmyadmin пароль указывается в config.inc.php?
     
  9. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    в денвере по умолчанию root без пароля.
    Если phpma не спрашивает - значит именно тот самый случай.

    попробуй так

    class Config {
    var $BASE_URL = "127.0.0.1";
    var $DB_HOST = "localhost";
    var $DB_USER = "root";
    var $DB_PASS = "";
    var $DB_NAME = "myprogect";
    }
     
  10. Rumato

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

    С нами с:
    26 дек 2010
    Сообщения:
    77
    Симпатии:
    0
    ошибку нашел тут :
    Код (Text):
    1. private function open_connection() {
    2.             $this->connection = mysql_connect($this->DB_HOST,
    3.             $this->DB_USER,
    4.             $this->DB_PASS);

    было
    Код (Text):
    1.  
    2. private function open_connection() {
    3.          $this->connection = mysql_connect($this->DB_HOST,
    4.          $this->DB_USER,
    5.          $this->DB_NAME) ;
    теперь вроде заработало, хотя полностью не проверял - уже спать хочу, завтра всё посмотрю и отпишусь об успехах
     
  11. Rumato

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

    С нами с:
    26 дек 2010
    Сообщения:
    77
    Симпатии:
    0
    tommyangelo, спасибо за помощь, дело было в ошибке параметров функции