Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
PHP и MySQL, ошибка конекта, которой в принципе быть не должно |

06.07.2008, 12:11
|
|
Участник форума
Регистрация: 01.12.2007
Сообщений: 141
Провел на форуме: 1208190
Репутация:
136
|
|
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 код:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'ODBC'@'localhost' (using password: NO) in Z:\home\cms.ru\www\get_information.php on line 6
В строке 6 содержитсяфункция конекта с БД. Нет доступа, но с какой стати? Почему у меня появляется эта ошибка? Заранее всем благодарен.
|
|
|

06.07.2008, 12:15
|
|
Участник форума
Регистрация: 09.03.2008
Сообщений: 193
Провел на форуме: 2140897
Репутация:
267
|
|
Значаит ты неправильно указал логин/пасс.
|
|
|

06.07.2008, 12:16
|
|
Участник форума
Регистрация: 01.12.2007
Сообщений: 141
Провел на форуме: 1208190
Репутация:
136
|
|
Логин пасс указаны правельно.. потому что если, их ввести напрямую в функцию, то все работает.
|
|
|

06.07.2008, 12:20
|
|
Участник форума
Регистрация: 16.06.2006
Сообщений: 179
Провел на форуме: 515368
Репутация:
135
|
|
а ты попробуй
PHP код:
$dbcon = mysql_connect($host, $login, $password) or die('База данных не доступна');
mysql_select_db($db_name);
записать в файл config.php
Последний раз редактировалось FraiDex; 06.07.2008 в 12:24..
|
|
|

06.07.2008, 12:25
|
|
Постоянный
Регистрация: 16.02.2008
Сообщений: 724
Провел на форуме: 1025839
Репутация:
581
|
|
А ты не хочешь 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;
}
}
Писать в конфиг конект к БД - ацко ппц.
|
|
|

06.07.2008, 12:25
|
|
Участник форума
Регистрация: 01.12.2007
Сообщений: 141
Провел на форуме: 1208190
Репутация:
136
|
|
to FraiDex Хех, а так работает. Спс. Че то совсем мозги на бикрень, думаю больше об алгоритмической части. Но мне всеравно интересно почему не работало иначе. Так как значения переменных рекварились.
Ну вот с etc фактически одновременно отпостили.. Ок, понял спс.
Последний раз редактировалось 0x22b; 06.07.2008 в 12:27..
|
|
|

06.07.2008, 12:35
|
|
Участник форума
Регистрация: 16.06.2006
Сообщений: 179
Провел на форуме: 515368
Репутация:
135
|
|
потому, что функция не видет переменные $host, $login, $password, $db_name, так как они не глобальные.
как сделать их глобальными те etc написал немного выше. но лучше всего коннект прописывать в конфиге.
|
|
|

06.07.2008, 12:40
|
|
Участник форума
Регистрация: 01.12.2007
Сообщений: 141
Провел на форуме: 1208190
Репутация:
136
|
|
Я зделал немного по другому.. 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);
}
?>
Думаю так будт лучше и удобнее. Всем огромное спасибо!
|
|
|

06.07.2008, 12:44
|
|
Участник форума
Регистрация: 16.06.2006
Сообщений: 179
Провел на форуме: 515368
Репутация:
135
|
|
и зачем ты всё это зафигачил в функцию??? не вижу смысла
|
|
|

06.07.2008, 12:46
|
|
Участник форума
Регистрация: 01.12.2007
Сообщений: 141
Провел на форуме: 1208190
Репутация:
136
|
|
Сообщение от FraiDex
и зачем ты всё это зафигачил в функцию??? не вижу смысла
mysql_pconnect() - откроет постоянный конект к БД, функцию db_connect вызываю всего один раз в get_menu(), а в остальных случая работаю с готовым соеденением.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|