Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Возврат значений функции

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Подключение к БД
pixel
Отправлено: 18 Апреля, 2009 - 15:42:31
Post Id


Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Апр. 2009  


Помог: 0 раз(а)




Добрый день.
Приспичило тут набросать небольшую прожку и вот решил на связке PHP+MySQL. Но т.к. постоянной практики в этот нет, приходится по крупица собирать. И естественно, что многого не знаю.
В общем я хотел, что бы в каждом php-файле не писать процедуру вызова подключения к БД, вынести ее в инклюд и просто подключать там где надо. Но похоже что мой код совершенно неправелен, т.к. из инклюда не происходит возврата выборки. Вот инклюд:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function Connection ($Db_Name, $SQL_Query)
  4. {
  5. $db=mysql_connect("localhost","root");
  6. if (!$db)
  7. {
  8. include ("http://localhost/Include/top.inc");
  9. echo "<div class=warning>Не могу подключиться к БД!<br>Возможно не запущен сервер</div>";
  10. include ("http://localhost/Include/bottom.inc");
  11. }
  12. $mysql=mysql_select_db("$Db_Name",$db);
  13. if (!$mysql)
  14. {
  15. include ("http://localhost/Include/top.inc");
  16. echo "<div class=warning>Не могу подключиться к БД '$Db_Name'</div>";
  17. include ("http://localhost/Include/bottom.inc");
  18. }
  19. $result=mysql_query("$SQL_Query",$db);
  20. return $result;
  21. }
  22. ?>
  23.  

соответственно в вызывающем файле ставлю:
PHP:
скопировать код в буфер обмена
  1.  
  2. require ("http://localhost/Include/db.inc");
  3. Connection ("TableName","select ID_USER from users where login='$Log1' and Password='$Pass1'"");
  4. $myrow=mysql_fetch_row($result);
  5.  

вот на $myrow как раз ошибка и вылетает, как буд то после вызова функции Connection не происходит ожидания возврата значения и сразу идет обращение к mysql_fetch_row. Я конечно не спец, может кто подскажет как лучше сделать, что бы не продить излишний код в куче файлов.
 
 Top
Champion Супермодератор
Отправлено: 18 Апреля, 2009 - 15:55:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




pixel пишет:
and Password='$Pass1'"");

А вообще http://phpfaq[dot]ru/debug для таких вещей.
 
 Top
pixel
Отправлено: 18 Апреля, 2009 - 16:07:03
Post Id


Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Апр. 2009  


Помог: 0 раз(а)




Champion пишет:
pixel пишет:
and Password='$Pass1'"");

А вообще http://phpfaq[dot]ru/debug для таких вещей.

вторую двойную кавычку случайно добавил при составлении поста, в реальном коде ее нет. И выдает такую ошибку "Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in d:\infosystem\user_enter.php on line 9"
 
 Top
Champion Супермодератор
Отправлено: 18 Апреля, 2009 - 16:15:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




про использование функций внимательнее прочитай. И про область видимости перемееных. Если функция возвращает значение, то чтоб этим значением пользоваться, его надо присвоитьЖ $result = Connection...
 
 Top
Roler
Отправлено: 18 Апреля, 2009 - 16:16:41
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




Смысл подключаться для каждого запроса?

(Отредактировано автором: 18 Апреля, 2009 - 16:20:42)

 
 Top
pixel
Отправлено: 18 Апреля, 2009 - 16:19:22
Post Id


Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Апр. 2009  


Помог: 0 раз(а)




Champion пишет:
Если функция возвращает значение, то чтоб этим значением пользоваться, его надо присвоить $result = Connection...

спасибо, то что нужно! (долго бы я бился...)
 
 Top
Гость
Отправлено: 18 Апреля, 2009 - 18:47:18
Post Id


УДАЛЁН










Вообще мне сильно Не нравится фраза include ("http://localhost/Include/top.inc"); и пободные ей - потенциалтная ошибка или дырище в безопасностти
Если сервер настроен верно то доступа в содержимому inc-файлов через http быть не должно вообще и такой include не пройдет
Если же такой инклбд работает это значит что на робочем сервер ваши пвроли и данные могут украть прочитав файл
 
 Top
SiemX
Отправлено: 19 Апреля, 2009 - 13:33:18
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




А зачем вобще каждый раз подключаться к базе для выполн6ения одного запроса. это ж тормоз бкдет
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB