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
Форумы портала PHP.SU :: Версия для печати :: Возврат значений функции
Форумы портала PHP.SU » PHP » Программирование на PHP » Возврат значений функции

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

1. pixel - 18 Апреля, 2009 - 15:42:31 - перейти к сообщению
Добрый день.
Приспичило тут набросать небольшую прожку и вот решил на связке 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. Я конечно не спец, может кто подскажет как лучше сделать, что бы не продить излишний код в куче файлов.
2. Champion - 18 Апреля, 2009 - 15:55:46 - перейти к сообщению
pixel пишет:
and Password='$Pass1'"");

А вообще http://phpfaq[dot]ru/debug для таких вещей.
3. pixel - 18 Апреля, 2009 - 16:07:03 - перейти к сообщению
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"
4. Champion - 18 Апреля, 2009 - 16:15:46 - перейти к сообщению
про использование функций внимательнее прочитай. И про область видимости перемееных. Если функция возвращает значение, то чтоб этим значением пользоваться, его надо присвоитьЖ $result = Connection...
5. Roler - 18 Апреля, 2009 - 16:16:41 - перейти к сообщению
Смысл подключаться для каждого запроса?
6. pixel - 18 Апреля, 2009 - 16:19:22 - перейти к сообщению
Champion пишет:
Если функция возвращает значение, то чтоб этим значением пользоваться, его надо присвоить $result = Connection...

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

 

Powered by ExBB FM 1.0 RC1