• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zagadkowa pętla while

+1 głos
80 wizyt
pytanie zadane 17 września w PHP przez Kuba123 Nowicjusz (160 p.)

Witajcie! Mam bardzo poważny problem ze specyficzną pętlą

<?php
					$host = "localhost";
					$db_user = "root";
					$db_password = "";
					$db_name = "strona8";
					
					$polaczenie = @new mysqli($host, $db_user, $db_passowrd, $db_name);
					
					if($polaczenie->connect_errno != 0) {
						echo "error";
					}
					
					$rezultat = $polaczenie->query("SELECT * FROM tablica");
					
					while( $rezultat->fetch_assoc()) {
						echo "1";
					}

, której od 3 godzin nie potrafię zrozumieć :(

Będę niezwykle wdzięczny za wytłumaczenie jak to właściwe działa i czemu przy 2 wierszach wyświetla cyfrę 1 dwa razy. Dodam, że jestem początkujący.

Pozdrawiam, 

Kuba

1 odpowiedź

+1 głos
odpowiedź 17 września przez SzkolnyAdmin Maniak (60,280 p.)
wybrane 17 września przez draghan
 
Najlepsza
W linii 15 ( $rezultat->fetch_assoc() ) wywoływany jest (w przybliżeniu mówiąc) kolejny rekord zwrócony zapytaniem SQL. I tak kolejno do końca wyników zapytania. Gdy nie masz już żadnych rekordów do pokazania, metoda zwraca FALSE i pętla while się nie wykona. Ponieważ masz dwa rekordy (jak napisałeś), pętla obróci się dwa razy.

Ogólnie to poczytaj sobie o pęttli typu while, do...while (i innych) i spróbuj zrozumieć różnicę w ich działaniu.
komentarz 17 września przez qax Gaduła (4,230 p.)

Innymi słowy pętla jest wykonywana tyle razy ile jest rekordów w tabeli. wink

komentarz 17 września przez Kuba123 Nowicjusz (160 p.)

@SzkolnyAdmin, 

Dzięki!

2
komentarz 17 września przez VBService VIP (128,190 p.)
edycja 17 września przez VBService

Innymi słowy pętla jest wykonywana tyle razy ile jest rekordów w tabeli.

while( $rezultat->fetch_assoc()) { ... }

nie do końca @qax, powyższy kod, wykona "pętle" tylko tyle razy ile zostało "zwróconych" z zapytania sql rekordów,

chociaż w tym konkretnym przypadku

SELECT * FROM tablica;

tak, wszystkie rekordy z tabeli.

1
komentarz 17 września przez qax Gaduła (4,230 p.)
Tak, masz rację. No ale dla początkującego lepsze jest ogólne wytłumaczenie. Wchodząc głębiej można używać bardziej fachowego języka. Daje ci łapkę w górę za ten komentarz.

Podobne pytania

+1 głos
2 odpowiedzi 264 wizyt
pytanie zadane 28 stycznia 2017 w C i C++ przez qlucha Obywatel (1,790 p.)
0 głosów
0 odpowiedzi 79 wizyt
pytanie zadane 6 grudnia 2018 w PHP przez DawidK6 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 523 wizyt
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

85,212 zapytań

134,029 odpowiedzi

297,158 komentarzy

56,309 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...