elcomnet Опубликовано 13 Марта 2008 Жалоба Поделиться Опубликовано 13 Марта 2008 ситуация такаясоздаю свою функцию, например, function getcardsназначение - получить из базы список последних отправленных открыток.не спрашивайте, зачем это нужно...так вот, строки оттуда (описываю с соединением к БД) $dbconn = new mysqli($host, $user, $pass, $db); //перед этим, разумеется, переменные объявлены; $getcard = 'SELECT name, path FROM cards_files ORDER BY last_send DESC LIMIT 0,5'; $showcard = $dbconn->query($getcard); и, когда я пытаюсь использовать функцию, php выкидывает Fatal error: Call to a member function query() on a non-object in ((((path to file)))) on line 30 p.s. если использовать процедурный подход, то все работает (те mysql_query и тп).А ооп не пашет..Я поговорил со знакомым - он ни черта в php не смыслит, но сказал, что в принципе должно все работать. Может, кто-то объяснит, почему так?Я глуп или php криво настроен? Хотелось бы услышать комментарий Sannis'a..... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 13 Марта 2008 Жалоба Поделиться Опубликовано 13 Марта 2008 Вероятно после первой строки $dbconn == false?PHP мог быть собран без поддержки MySQLi... Проверьте. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
elcomnet Опубликовано 13 Марта 2008 Автор Жалоба Поделиться Опубликовано 13 Марта 2008 (изменено) Sannis, проверял. Везде в остальных местах работает. Экстеншен включен. Такой запрос (просто в теле контроллера, без функции)$query = 'select * from sh_cards'; $result = $connect->query($query);работает А по поводу функции...Если идет проверка if(mysqli_connect_errno()) { echo 'error'; exit; } запрос идет далее, значит, проверка выполняется...и соединение установлено... Изменено 13 Марта 2008 пользователем elcomnet Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 13 Марта 2008 Жалоба Поделиться Опубликовано 13 Марта 2008 У вас там получается 2 объекта с одинаковыми данными подключения в скрипте? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
elcomnet Опубликовано 13 Марта 2008 Автор Жалоба Поделиться Опубликовано 13 Марта 2008 Не, данные подключения использует только фукнция. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
elcomnet Опубликовано 14 Марта 2008 Автор Жалоба Поделиться Опубликовано 14 Марта 2008 Что, подобной проблемы ни у кого не было?Ну тогда закрывайте нафиг тему. Пойду php клаб пытать))) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 14 Марта 2008 Жалоба Поделиться Опубликовано 14 Марта 2008 $dbconn внутри функции global? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
elcomnet Опубликовано 14 Марта 2008 Автор Жалоба Поделиться Опубликовано 14 Марта 2008 А пох.Пробовал и внутри и снаружи.И в начале документа. Абсолютно пох.У меня такое впечатление, что он просто не видит в переменной запрос.И пишет, что в query() не был введн запрос.... Кстати, как, мать её, расшифровывается эта ошибка? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 14 Марта 2008 Жалоба Поделиться Опубликовано 14 Марта 2008 Запрос он видит, он не видит $dbconn который является объектом и имеет метод query() Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
elcomnet Опубликовано 14 Марта 2008 Автор Жалоба Поделиться Опубликовано 14 Марта 2008 Окей, а почему не видит-то?Вообще? Не в фукции, ни в документе? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 14 Марта 2008 Жалоба Поделиться Опубликовано 14 Марта 2008 $dbconn = new mysqli($host, $user, $pass, $db);замените наprint $host.' - '.$user.' - '.$pass.' - '.$db; $dbconn = new mysqli($host, $user, $pass, $db); print_r($dbconn);Что будет? И объясните нам таки, в каких областях какие переменные лежат и где query вызывается. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.