PHP и MySQL, ошибка конекта, которой в принципе быть не должно

Discussion in 'PHP' started by 0x22b, 6 Jul 2008.

  1. 0x22b

    0x22b Elder - Старейшина

    Joined:
    1 Dec 2007
    Messages:
    114
    Likes Received:
    32
    Reputations:
    9
    Имеется файл config.php в нем содержаться параметры для соеденения с БД
    PHP:
    <?php
    //указываем параметры для подключения к БД
    $host "localhost";
    $login "root";
    $password "";
    $db_name "cms";
    ?>
    также есть файл get_information.php.
    PHP:
    require("config.php");

    function 
    get_menu()
    {
        
    $dbcon mysql_connect($host$login$password) or die('База данных не доступна');
        
    mysql_select_db($db_name);
        
    $qGetMenu 'select * from menu';
        
    $rGetMenu mysql_query($qGetMenu) or die('Таблица не доступна');
         if (
    mysql_num_rows($rGetMenu) != 0)
         {
             return 
    $rGetMenu;
         }
         else
         {
             return 
    false;
         }
    }
    В index.php есть момент когда функция get_menu() используется. В принципе как видно из примера все должно работать, а именно конект с базой. Но появляется следующая ошибка:

    PHP:
    Warningmysql_connect() [function.mysql-connect]: Access denied for user 'ODBC'@'localhost' (using passwordNOin Z:\home\cms.ru\www\get_information.php on line 6
    В строке 6 содержитсяфункция конекта с БД. Нет доступа, но с какой стати? Почему у меня появляется эта ошибка? Заранее всем благодарен.
     
  2. Shadow_p1raT

    Shadow_p1raT Elder - Старейшина

    Joined:
    9 Mar 2008
    Messages:
    174
    Likes Received:
    93
    Reputations:
    0
    Значаит ты неправильно указал логин/пасс.
     
  3. 0x22b

    0x22b Elder - Старейшина

    Joined:
    1 Dec 2007
    Messages:
    114
    Likes Received:
    32
    Reputations:
    9
    Логин пасс указаны правельно.. потому что если, их ввести напрямую в функцию, то все работает.
     
  4. FraiDex

    FraiDex Elder - Старейшина

    Joined:
    16 Jun 2006
    Messages:
    193
    Likes Received:
    68
    Reputations:
    -11
    а ты попробуй
    PHP:
    $dbcon mysql_connect($host$login$password) or die('База данных не доступна');
    mysql_select_db($db_name);
    записать в файл config.php
     
    #4 FraiDex, 6 Jul 2008
    Last edited: 6 Jul 2008
    1 person likes this.
  5. etc

    etc Elder - Старейшина

    Joined:
    16 Feb 2008
    Messages:
    113
    Likes Received:
    175
    Reputations:
    1
    А ты не хочешь global добавить в ф-цию? Иначе он просто их не видит :)
    PHP:
    function get_menu() 

        global 
    $host$login$password$db_name;
        
    $dbcon mysql_connect($host$login$password) or die('База данных не доступна'); 
        
    mysql_select_db($db_name); 
        
    $qGetMenu 'select * from menu'
        
    $rGetMenu mysql_query($qGetMenu) or die('Таблица не доступна'); 
         if (
    mysql_num_rows($rGetMenu) != 0
         { 
             return 
    $rGetMenu
         } 
         else 
         { 
             return 
    false
         } 

    Писать в конфиг конект к БД - ацко ппц.
     
    1 person likes this.
  6. 0x22b

    0x22b Elder - Старейшина

    Joined:
    1 Dec 2007
    Messages:
    114
    Likes Received:
    32
    Reputations:
    9
    to FraiDex Хех, а так работает. Спс. Че то совсем мозги на бикрень, думаю больше об алгоритмической части. Но мне всеравно интересно почему не работало иначе. Так как значения переменных рекварились.

    Ну вот с etc фактически одновременно отпостили.. Ок, понял спс.
     
    #6 0x22b, 6 Jul 2008
    Last edited: 6 Jul 2008
    1 person likes this.
  7. FraiDex

    FraiDex Elder - Старейшина

    Joined:
    16 Jun 2006
    Messages:
    193
    Likes Received:
    68
    Reputations:
    -11
    потому, что функция не видет переменные $host, $login, $password, $db_name, так как они не глобальные.
    как сделать их глобальными те etc написал немного выше. но лучше всего коннект прописывать в конфиге.
     
  8. 0x22b

    0x22b Elder - Старейшина

    Joined:
    1 Dec 2007
    Messages:
    114
    Likes Received:
    32
    Reputations:
    9
    Я зделал немного по другому.. config.php переименовал в db_fns.php
    и там внес некоторые изменения.
    db_fns.php
    PHP:
    <?php
    function db_connect()
    {
    $host "localhost";
    $login "root";
    $password "";
    $db_name "cms";
    $dbcon mysql_pconnect($host$login$password) or die('База данных не доступна');
    mysql_select_db($db_name);
    }
    ?>
    Думаю так будт лучше и удобнее. Всем огромное спасибо!
     
  9. FraiDex

    FraiDex Elder - Старейшина

    Joined:
    16 Jun 2006
    Messages:
    193
    Likes Received:
    68
    Reputations:
    -11
    и зачем ты всё это зафигачил в функцию??? не вижу смысла
     
  10. 0x22b

    0x22b Elder - Старейшина

    Joined:
    1 Dec 2007
    Messages:
    114
    Likes Received:
    32
    Reputations:
    9
    mysql_pconnect() - откроет постоянный конект к БД, функцию db_connect вызываю всего один раз в get_menu(), а в остальных случая работаю с готовым соеденением.
     
  11. etc

    etc Elder - Старейшина

    Joined:
    16 Feb 2008
    Messages:
    113
    Likes Received:
    175
    Reputations:
    1
    0x22b, маладетс, правильно мыслиш :)
     
Loading...
Similar Threads - MySQL ошибка конекта
  1. GAiN
    Replies:
    3
    Views:
    8,503