![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 29.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Jeśli wywołam poniższy kod z wnętrza klasy, dostanę następujący komunikat: Cytat supplied argument is not a valid MySQL result resource Jeśli natomiast wykonam kod poza klasą (nieumieszczony w funcji), wszystko będzie działało poprawnie. W czym leży problem?
|
|
|
![]()
Post
#2
|
|
![]() Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
nie wiem w ktorej lini problem, ale jezeli w tej z mysql_query" title="Zobacz w manualu php" target="_manual() to dodaj res. od bazy danych.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 28.09.2003 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Może dodaj obsługę błędów i zobacz co wyświetliło. No i:
![]() To '$sql_array = ' jest przecież niepotrzebne. ---- Gorąco polecam zmianę nazw zmiennych i metody, na bardziej intuicyjne - metoda powinna, moim zdaniem, nazwać się query, a zmienna $sql_query, raczej $result (patrz: komunikat - MySQL result resource) ![]() ![]() ---- TomASS: $var = false; też zwroci true? ;> |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
M4chu ma rację
![]() --------edit-------------- Masz rację, mój bład. Jak dasz:
Wydało mi się to dziwne, z tego względu, że w logice operator przypisanaia zawsze będzie dawał wynik true, widocznie tak w php nie jest. Przepraszam bardzo za wprowadzenie w bład. Ten post edytował TomASS 16.09.2005, 14:44:48 -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat (bo operator przypisania zawsze będzie dawał true) Nie prawda, zwroci $sql_array. Linia z bledem to ta z "return $sql_array = mysql_fetch_array($sql_query, MYSQL_BOTH);", php podaje, ze podano nieprawidlowy "result resource" -- wynik zapytania, czyli blad jest w mysql_query() -- pewnie, jak mowil hwao, nieokresliles polaczenia z baza, ani sie nie polaczyles z nia (nie widac tego w kodzie). Rada: nie uzywaj domyslnego polaczenia z baza, tylko ZAWSZE przekazuj resource polaczenia do kazdej funkcji tego wymagajacej. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 29.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Z tymi nazwami zmiennych i funcji to rzeczywiście macie racje. Wybrałem trochę nieintuicyjne nazwy. Do bazy łączę się przez ten kod:
Czy to może być problemem? Jeśli tak, to czym to zastąpić oraz czy będzie działało bez żadnego problemu? |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 28.09.2003 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Cytat(Wojteq @ 2005-09-16 15:28:35) Z tymi nazwami zmiennych i funcji to rzeczywiście macie racje. Wybrałem trochę nieintuicyjne nazwy. Do bazy łączę się przez ten kod:
Czy to może być problemem? Jeśli tak, to czym to zastąpić oraz czy będzie działało bez żadnego problemu? Prawde mowiac nawet nie wiedzialem, ze mozna tak z __autoload kozystac ![]()
To zresztą nie ma znaczenia, jakbyś uważnie przeczytał posty przedmówców, to byś wiedział, że nie w tym rzecz ![]() ![]()
ehh rozpisalem sie ![]() pozdro |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 29.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
OK. Dzięki za pomoc.
Mam jednak jeszcze jedno pytanie: podobno można stworzyć nowy obiekt łączący się z bazą za pomoćą
I z tym związane jest moje pytanie: jak wewnątrz klasy utworzyć nowy obiekt? Przez konstruktor czy przez funkcję, która będzie iniciowana przez konstruktor i czy istnieje jakiś sposób, aby nie pisać za każdym razem takich samych konstruktorów w podklasie, które znajdują się w nadklasie? |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 28.09.2003 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Cytat(Wojteq @ 2005-09-21 21:17:24) I z tym związane jest moje pytanie: jak wewnątrz klasy utworzyć nowy obiekt? Przez konstruktor czy przez funkcję, która będzie iniciowana przez konstruktor i czy istnieje jakiś sposób, aby nie pisać za każdym razem takich samych konstruktorów w podklasie, które znajdują się w nadklasie? Zależy co rozumiesz pod pojęciem "utworzyć nowy obiekt wewnątrz klasy"? Co do takich samych konstruktorów w podklasie jak w nadklasie, to też nie rozumiem... mówisz o pod i nad klasach, a nie słyszałeś o dziedziczeniu? Konkrety! ![]() |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 29.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Chodziło mi właśnie o dziedziczenie.
Czyli czy istnieje coś takiego jak 'dzedziczenie konstruktorów'. bo nie chcę w każdej klasie pisać identycznych konstruktorów, króre będą wykonywały te same operacje. Bo jeśli utowrzę klasę B, która będzie dziedziczyła od klasy A wszystkie zmiene i funkcje, a zestępowała jedną funkcję (np. display()). I po co w takiej sytuacji pisać nowy konstruktor? A co do mysqli_connect() to chodzi mi o utworzenie obiektu który będzie się łączył (już wewnątrz klasy) i bazą danych. |
|
|
![]()
Post
#11
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zatem co wyświetli ten przykład?
Ten post edytował splatch 22.09.2005, 08:17:11 -------------------- Łukasz Dywicki
Independent Java and open source software consultant. Blog - Java, OSGi, integracja oprogramowania.. |
|
|
![]()
Post
#13
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Takie cos nie przejdzie:
__autoload sluzy zupelnie do czego innego -> manual. Dla tego nigdy ci nie uruchamialo tej funkcji. Cytat A co do mysqli_connect() to chodzi mi o utworzenie obiektu który będzie się łączył (już wewnątrz klasy) i bazą danych.
W razie niepowodzenia zwracaja FALSE, ja uzywam mysqli_connect gdyz konstruktor nie powinien zwracac FALSE. Dalej korzystam z otrzymanego obiektu. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#14
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(splatch @ 2005-09-22 09:16:41) Zatem co wyświetli ten przykład?
Wynik: Cytat B
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@mike_mech po co pisać taki kod, skoro działa krótszy:
To wyświetli samo B. No i dodatkowo, gdyby konstruktory nie były dziedziczone jaki by był sens tworzyć konstruktory finalne?
-------------------- Łukasz Dywicki
Independent Java and open source software consultant. Blog - Java, OSGi, integracja oprogramowania.. |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 29.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za pomoc i wyjaśnienie. Właśnie o to mi chodziło. Mam jednak jeszcze jedno pytanie dotyczące wykonywania zapytań do bazy. Jakie parametry mam podać pod czas wykonywania zapytania przez mysqli_connect? Wystarczy sam string, czy muszę wcześniej podać w parametrach utworzony obiekt klasy mysqli?
|
|
|
![]()
Post
#17
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(Wojteq @ 2005-09-30 14:55:42) Jakie parametry mam podać pod czas wykonywania zapytania przez mysqli_connect? Wystarczy sam string, czy muszę wcześniej podać w parametrach utworzony obiekt klasy mysqli? No bez przesaday. My też się cieszymy że Ci pomogliśmy ale to już sam możesz sprawdzić: mysqli_connect(). Przkłady są bardzo przejrzyste. |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 29.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Chodziło mi o funkcję mysqli_query a nie connect
![]() Bo tam przykłady nie są (przynajmniej dla mnie) zbyt oczywiste... Chodzi mi o to, czy mogę użyć takiego zapisu wewnątrz klasy:
Ten post edytował Wojteq 30.09.2005, 17:31:07 |
|
|
![]()
Post
#19
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
No nie przesadzaj. Jak byk stoi w manualu:
Styl zorientowany obiektowo:
Styl proceduralny:
Czego tu można nie zrozumieć :?: A poza tym napisałeś sobie kod i co? Nawet nie sprawdziłeś czy zadziała. Zawsze najlepiej empirycznie sprawdzić. |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 29.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
To co było w manualu raczej zrozumiałem zrozumiałem, ale co zrobić jeśli ten kod znajduje się wewnątrz klasy?
Ten post edytował Wojteq 30.09.2005, 18:47:26 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 11:13 |