Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 26.07.2008 Ostrzeżenie: (0%)
|
Mam taki głupi problem..
Mianowicie nie działa mi następujący kod:
Wypluwa mi informację iż rekord istnieje, choć fizycznie w bazie go nie ma.. Ten post edytował Raffuss 27.11.2010, 17:50:02 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%)
|
To chyba bez tego count wystarczy (IMG:style_emoticons/default/winksmiley.jpg)
|
|
|
|
Post
#3
|
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
Logika Ci szwankuje. Jakie masz zapytanie? Sprawdziłeś? Takie zapytanie ZAWSZE zwróci dokładnie jeden rekord, który zawiera ilość policzonych maili. Nawet jeśli żaden nie pasuje, to zwróci jeden wiersz wyniku z liczbą 0. Tak więc masz sprawdzać nie ile wierszy ma wynik, ale czy liczba zwrócona w wyniku jest większa od zera. Aby przykład Ci zadziałał zmień sobie przykładowo na:
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 26.07.2008 Ostrzeżenie: (0%)
|
Niby tak.. ale jak bym chciał sprawdzić ile razy ten rekord w danej tabeli występuje potrzebuję count (IMG:style_emoticons/default/winksmiley.jpg) Dlatego właśnie jest on w zapytaniu do bazy..
Logika Ci szwankuje. Jakie masz zapytanie? Sprawdziłeś? Takie zapytanie ZAWSZE zwróci dokładnie jeden rekord, który zawiera ilość policzonych maili. Nawet jeśli żaden nie pasuje, to zwróci jeden wiersz wyniku z liczbą 0. Tak więc masz sprawdzać nie ile wierszy ma wynik, ale czy liczba zwrócona w wyniku jest większa od zera. Aby przykład Ci zadziałał zmień sobie przykładowo na:
Wyskakuje błąd.. (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%)
|
mysql_num_rows
Cytat Retrieves the number of rows from [...] statements like SELECT Czyli robisz zapytanie wybierające wiersze z mailem X i liczysz za pomocą wspomnianej funkcji. |
|
|
|
Post
#6
|
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
Skoro sypie Ci błąd to napisz jaki. Ostatnia szklana kula zbiła mi się rok temu (IMG:style_emoticons/default/biggrin.gif) Bo samo połączenie mysql_query i mysql_result jest na bank prawidłowe. Nieraz tak robiłem i zawsze wynik zwracało. Zamiast die('błąd') daj die( mysql_error() ) i więcej ciut informacji, bo jak dla mnie to co zasugerowałem nie powinno sypnąć błędem a byk tkwi gdzieś indziej. Może źle coś ustawiłeś?
|
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 26.07.2008 Ostrzeżenie: (0%)
|
Gdyby sypnął czymś poza napisem błąd, to bym napisał.. a jako że moja szklana kula także jest w naprawie, mam u siebie w kodzie mysql_error() i mimo tego nie pokazuje dosłownie żadnego błędu..
|
|
|
|
Post
#8
|
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. |
Więc po prostu odczytaj zawartość tablicy normalnie, a nie jakimś mysql_result (IMG:style_emoticons/default/winksmiley.jpg)
Zapoznaj się z funkcją mysql_fetch_array() - obacz zwłaszcza komentarze, w których masz napisane, jak się dostać do wierszy. AHA. Gdybyś nie liczył na szklane kule, to byś wpadł na to, że się usuwa die() przed wywołaniem mysql_error() |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 26.07.2008 Ostrzeżenie: (0%)
|
Dzięki, tę funkcję też znam.. Pytałem jednak o mysql_num_rows, ponieważ chcę wiedzieć czy to nie działa przez błąd w kodzie czy przez ustawienia maszyny produkcyjnej.. Z całym szacunkiem ale po to jest ta funkcja, żeby sobie życie upraszczać w przypadkach potrzeby wyniku numerycznego..
|
|
|
|
Post
#10
|
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
Mysql_num_rows liczy ile jest wierszy w wyniku, a jak wspomniałem jeśli zrobisz "Select count(coś tam) i dalej", to dostaniesz dokładnie jeden wiersz wyniku. Używanie jej więc w tym przypadku jest bezsensem. Gdybyś nie użył count w zapytaniu - to mysql_num_rows ma sens bo może zapytanie nie zwrócić pasujących wyników. Jeśli jednak na "SELECT count(coś)" się upierasz, to musisz ten rekord odebrać i odczytać co zwrócił. Ja zaproponowałem mysql_result z racji dostępu do wyniku od razu poprzez podanie wiersza i offsetu. Skoro jednak nie działa to obstawiam błąd skryptu, bo funkcję *_num_rows tylko najwięksi debile lub dowcipnisie by na serwerze blokowali. Sprawdź po kolei czy jest naprawdę wszystko w porządku, począwszy od połączenia z bazą, poprzez generowanie zapytania, potem to co zwraca baza. W ktorymś miejscu musi być byk. Ja obstawiałbym coś nie tak z zapytaniem. Die wywala skrypt i dlatego mysql_error wciska się do niego. Umieszczenie mysql_error gdzieś za wywołaniem die jest porównywalne do leżenia na rozebranych torach i czekanie aż przejedzie Cię pociąg (IMG:style_emoticons/default/winksmiley.jpg) Innymi słowy spóźniłeś się ileś tam czasu i nie dojdzie do tego nigdy.
|
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 26.07.2008 Ostrzeżenie: (0%)
|
@thek.. dzięki za wskazówki..
Doszedłem przeszukując forum, iż count z num rows w parze nie idą. Error siedział w die, a mimo to nie wyświetlał niczego.. po prostu tutaj wkleiłem uproszczoną wersję, która podczas testowania także nie działała jak trzeba ale zarówno nie zawierała mysql_error() jak i wielu innych rzeczy. Błąd był zgoła gdzie indziej i doszedłem metodą prób i błędów. Kod działający wygląda następująco:
Ten post edytował Raffuss 29.11.2010, 00:58:15 |
|
|
|
![]() ![]() |
|
Aktualny czas: 20.12.2025 - 03:07 |