![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 9 Dołączył: 29.11.2010 Skąd: T Ostrzeżenie: (0%) ![]() ![]() |
Witam, z tego co widziałem/czytałem, problem jest dość popularny. Mimo tego przeglądnięcie dziesiątek tematów nie pomogło mi go rozwiązać :/
Zacznę może od kodu i jego opisu. W napisanej przeze mnie klasie User pod lupę trafiają dwie jej funkcje, publiczna "set" i prywatna "is_exists", reszta nie ma związku z problemem:
Funkcja set wywoływana jest w pliku który korzysta z utworzonego obiektu klasy User i przekazuje do obiektu za pomocą funkcji set wartości pobrane z formularza. Kod poniżej:
Jak widać do kontroli błędów podczas walidacji danych służy mi publiczna zmienna error, dzięki niej wiem że nie mam błędu na etapie walidacji który występuje przed felernym sprawdzeniem czy w bazie danych istnieje już podany wcześniej login lub email. Również jak widać wyświetlam sobie utworzone zapytanie przed wykonaniem go, jest ono w 100% poprawne. W funkcji "is_exists" poprzez dołączenie pliku odpowiedzialnego za utworzenie obiektu przez który łączę się z bazą tworzę właśnie taki obiekt. Błąd połączenia nie jest zwracany a więc teoretycznie też powinienem mieć pewność że obiekt ten zostaje utworzony. Również jak widać obiekt jest tworzony wewnątrz funkcji - a więc lokalnie, dzięki czemu nie muszę się do niego odwoływać globalnie itd, a bezpośrednio za pomocą zmiennej $dbc. Poniżej kod odpowiedzialny za połączenie z bazą danych:
Proszę o pomoc, nie pierwszy raz działam w podobny sposób i zawsze radziłem sobie z tym problemem, teraz jednak nie mam zielonego pojęcia skąd on się bierze (IMG:style_emoticons/default/sad.gif) Fatal error: Call to a member function query() on a non-object in... Rozumiem że wywołując składową klasy mysqli - query() - wywala mi błąd bo obiekt nie istnieje... Przepraszam za zamieszanie, wątek do zamknięcia. Problem najczęściej leży nie tam gdzie go szukamy (IMG:style_emoticons/default/smile.gif) Może podając na czym polegał przyczynię się do pomocy innym którzy kiedyś trafią na ten temat. Otóż funkcja is_exists zostaje wywołana w jednym skrypcie dwukrotnie, co za tym idzie require_once() nie dołącza drugi raz pliku odpowiedzialnego za połączenie z bazą. Zamiana na require() rozwiązuje problem (IMG:style_emoticons/default/smile.gif) w takim wypadku dobrym zwyczajem jest każdorazowa likwidacja utworzonego obiektu połączenia z bazą danych zaraz po jego zakończeniu (IMG:style_emoticons/default/smile.gif) Ten post edytował Geston 29.11.2010, 15:43:44 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 01:26 |