Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   PHP и MySQL, ошибка конекта, которой в принципе быть не должно (https://forum.antichat.xyz/showthread.php?t=76201)

0x22b 06.07.2008 12:11

PHP и MySQL, ошибка конекта, которой в принципе быть не должно
 
Имеется файл 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 содержитсяфункция конекта с БД. Нет доступа, но с какой стати? Почему у меня появляется эта ошибка? Заранее всем благодарен.

Shadow_p1raT 06.07.2008 12:15

Значаит ты неправильно указал логин/пасс.

0x22b 06.07.2008 12:16

Логин пасс указаны правельно.. потому что если, их ввести напрямую в функцию, то все работает.

FraiDex 06.07.2008 12:20

а ты попробуй
PHP код:

$dbcon mysql_connect($host$login$password) or die('База данных не доступна');
mysql_select_db($db_name); 

записать в файл config.php

etc 06.07.2008 12:25

А ты не хочешь 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
     } 


Писать в конфиг конект к БД - ацко ппц.

0x22b 06.07.2008 12:25

to FraiDex Хех, а так работает. Спс. Че то совсем мозги на бикрень, думаю больше об алгоритмической части. Но мне всеравно интересно почему не работало иначе. Так как значения переменных рекварились.

Ну вот с etc фактически одновременно отпостили.. Ок, понял спс.

FraiDex 06.07.2008 12:35

потому, что функция не видет переменные $host, $login, $password, $db_name, так как они не глобальные.
как сделать их глобальными те etc написал немного выше. но лучше всего коннект прописывать в конфиге.

0x22b 06.07.2008 12:40

Я зделал немного по другому.. 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);
}
?>

Думаю так будт лучше и удобнее. Всем огромное спасибо!

FraiDex 06.07.2008 12:44

и зачем ты всё это зафигачил в функцию??? не вижу смысла

0x22b 06.07.2008 12:46

Цитата:

Сообщение от FraiDex
и зачем ты всё это зафигачил в функцию??? не вижу смысла

mysql_pconnect() - откроет постоянный конект к БД, функцию db_connect вызываю всего один раз в get_menu(), а в остальных случая работаю с готовым соеденением.


Время: 09:12