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 :: Вызов функции, в которой есть SQL из другого файла
Покинул форум
Сообщений всего: 14
Дата рег-ции: Авг. 2013
Помог: 0 раз(а)
Всем привет!
Я сразу прошу прощения за, наверное, идиотский вопрос, однако тема всплыла, надо порешать, гугл не помог.
Ситуация: я сам c++ разработчик, но так получилось, что надо на PHP сделать регистрацию. Ну и пошел по сишному)
Дабы не углубляться в процесс изучения ООП на PHP, решил сделать эту тривиальную задачу функционально.
Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
lexdevel
Отправлено: 14 Августа, 2013 - 22:58:48
Новичок
Покинул форум
Сообщений всего: 14
Дата рег-ции: Авг. 2013
Помог: 0 раз(а)
imya пишет:
Как-то вы странно коннектитесь к базе через mysqli
Почитайте http://www.php.net/manual/ru/mysqli.quickstart.connections.php
Да, я видел, но мне непривычен в PHP ООП интерфейс, как я уже говорил, к тому же разрабы специально для таких как я оставили функциональный интерфейс. Но суть вопроса не в этом
imya
Отправлено: 14 Августа, 2013 - 23:09:21
Участник
Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012 Откуда: Запорожье, Украина
Эм... я просто не написал этого в сообщении, но мануалы читать умею, поэтому поставил коммент, что возвращаю false. Проверяю я ошибки)
Суть в том, что функция "зависает" и дальше обработка не происходит.
Тут вся суть в том, что 2 файла, я хз почему, т.к. ситуация нелогичная абсолютно. Если вкинуть в один файл, то все работает.
Покинул форум
Сообщений всего: 14
Дата рег-ции: Авг. 2013
Помог: 0 раз(а)
DeepVarvar пишет:
lexdevel:
1) Все переменные нет нужды объявлять в начале. Их можно объявлять на лету динамически прямо по ходу выполнения. Понадобилась переменная - декларируй.
2) Существует область видимости, и переменная объявленная внутри ф-ции не видна извне. А те кто объявлен вне ф-ции не видны внутри неё.
3) Вместо пошаговой отладки используй конструкцию вида: exit("Check message! Value = " . $var);
4) Примеры использования у нас не очень, сейчас найду что-то ближе к теме с нормальным перехватом ошибок.
1) Нет нужны - это не значит, что это есть ошибка, просто привычка такая уже выработалась
2) Я тоже читал про это, даже на сайте здесь урок по зонам видимости, но опять же, в моем случае - все должно быть видно
3) Я пока что сделал функцию эха пошагово на экран, заполняел по типу "<li>$message</li>", так и отловил, что функция "зависает"
4) Пример придумал вообще самый простой, чтобы просто потестить и не заморачиваться. БД, Таблица юзеров 3 поля (Id, Login, Password), никакого шифрования/хэширования и т.д. В общем, чисто для теста чтобы минимум времени потратить и разобраться в проблеме...
А вообще, спасибо за ответ. И за поиски примера) Может реально поможет)
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
lexdevel, ничего у тебя не будет видно.
Переменные $mysql_host, $mysql_user, $mysql_pass и $mysql_base не видны внутри функции registerUser() потому что у них разные области видимости.
Как заставить их быть видными внутри функции: использовать ключевое слово global
Выглядеть будет так:
Вот теперь всё будет работать. Но использовать ключевое слово global крайне не рекомендуется, это деает код жёстко привязанным и не удобным. В дальнейшем такой код будет сложно модифицировать.
DeepVarvar
Отправлено: 15 Августа, 2013 - 00:02:00
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
lexdevel пишет:
2) Я тоже читал про это, даже на сайте здесь урок по зонам видимости, но опять же, в моем случае - все должно быть видно
Так посмотри внимательнее, ты не передал в ф-цию данные для коннекта, и говоришь что все должно быть видно.
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
Ну а вообще я не вижу необходимости в создании этой функции. Если уж взялся писать всё в структурном стили то и пиши так. У тебя же получается что ты пытаешься создать функцию ради функции.
lexdevel
Отправлено: 15 Августа, 2013 - 00:02:59
Новичок
Покинул форум
Сообщений всего: 14
Дата рег-ции: Авг. 2013
Помог: 0 раз(а)
DeepVarvar пишет:
5) Нет нужды ставить закрывающий тег в конце файла. Это даже помогает. Но не будем углубляться.
6) Накидал пример с пояснениями:
5. Эм... ... Ладно, не будем углубляться, все равно я скоро вернусь к своему любимому с++ и... нет, этого я уже не забуду)
6. "Магия" - это круто)
В общем, спасибо огромное) Буду пытаться)
DeepVarvar
Отправлено: 15 Августа, 2013 - 00:03:10
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Okula, если говоришь что глобал = зло, то и советовать человеку не надо.
Кроме того ему ближе по сути показать передать в аргументах, что я и сделал.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.