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. markos_dp_ua - 28 Июня, 2008 - 18:43:30 - перейти к сообщению
Здравствуйте!
есть такие файлы:
connect.php


func.php
PHP:
скопировать код в буфер обмена
  1. <?
  2. function Example(){
  3. $query='select * from main;';
  4. $result=mysql_query($query, $_GLOBALS['link']);
  5. ...
  6. }
  7. ?>


main.php
PHP:
скопировать код в буфер обмена
  1. <?
  2. include_once("./connect.php");
  3. include_once("./func.php");
  4. Example();
  5. ?>


При выполнении main.php получаю
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource
Что я неправильно делаю?
2. valenok - 28 Июня, 2008 - 20:25:43 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?
  2. function Example(){
  3. global $link;
  4. $query='select * from main;';
  5. $result=mysql_query($query, $link);
  6. ...
  7. }
3. SION-ZENIT - 28 Июня, 2008 - 23:48:47 - перейти к сообщению
А сделать линк глобальным забыли ...
4. scuter - 29 Июня, 2008 - 01:22:25 - перейти к сообщению
Цитата:
А сделать линк глобальным забыли ...

если переменная оъявлена, значит она уже в глобале.
5. theos - 29 Июня, 2008 - 06:09:19 - перейти к сообщению
мне кажется что тут не в глобальности дело
а в области видимости - практически одно и тоже, но не совсем

global $link; - это самый правильный вариант в условиях переменной внутри функции, нежели $_GLOBALS['link']; потому что внутри функции возможно $_GLOBALS не видно
только если сделать
global $_GLOBALS;
ну это уже масло маслянное
6. Wange - 29 Июня, 2008 - 10:37:31 - перейти к сообщению
Подход очень странный. Зачем такой странный вариант коннекта?
А не проще ли подключиться к БД в файле connect.php? А потом использовать это подключение.
7. EuGen - 29 Июня, 2008 - 10:56:44 - перейти к сообщению
Вообще, старайтесь избегать использования глобальных переменных везде, где можно. В данном примере ресурс можно передавать в функцию параметром.
8. markos_dp_ua - 02 Июля, 2008 - 13:39:23 - перейти к сообщению
Добавил

выдаёт "is not a valid MySQL-Link resource in ..."
В чем может быть дело?
9. valenok - 02 Июля, 2008 - 16:20:42 - перейти к сообщению
в неправильном подклбчении к БД
Сразу после подключения и выборки БД поставьте echo mysql_error();
10. markos_dp_ua - 02 Июля, 2008 - 16:52:19 - перейти к сообщению
valenok пишет:
в неправильном подклбчении к БД
Сразу после подключения и выборки БД поставьте echo mysql_error();


Скопипастил connect.php в функцию - всё работает...
Соотв. к базе подключается правильно.
11. SergeantPEPPER - 02 Июля, 2008 - 17:52:23 - перейти к сообщению
Тогда все должно быть правильно.
Правда не видно к какой бд Вы подключаетесь...
У Вас после mysql_connect () должно следовать

После этого должно быть все ок.

Конечно же при условии, что
PHP:
скопировать код в буфер обмена
  1. $query = 'SELECT * FROM main';

таблица main у Вас действительно существует.
12. valenok - 02 Июля, 2008 - 19:52:32 - перейти к сообщению
Сюда его ещё скопируйте.
13. markos_dp_ua - 03 Июля, 2008 - 08:45:02 - перейти к сообщению
По-моему проблема из-за того, чтоне работают инклюды.
Может быть такое?


x.php

echo.php
PHP:
скопировать код в буфер обмена
  1. <?
  2. include "./x.php";
  3. echo $x;
  4. ?>


Соотв. страница http://localhost/echo.php оказывается пустой.
14. valenok - 03 Июля, 2008 - 11:29:19 - перейти к сообщению
Путь в инклуде значит указан не правильно.
Попробуйте просто include('x.php');

 

Powered by ExBB FM 1.0 RC1