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

Zagadkowa pętla while

VPS Starter Arubacloud
+1 głos
200 wizyt
pytanie zadane 17 września 2021 w PHP przez Awiator 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 2021 przez SzkolnyAdmin Szeryf (86,280 p.)
wybrane 17 września 2021 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 2021 przez qax Dyskutant (8,060 p.)

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

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

@SzkolnyAdmin, 

Dzięki!

2
komentarz 17 września 2021 przez VBService Ekspert (251,170 p.)
edycja 17 września 2021 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 2021 przez qax Dyskutant (8,060 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

+3 głosów
3 odpowiedzi 380 wizyt
pytanie zadane 27 kwietnia 2022 w Python przez urwis_marek Początkujący (260 p.)
0 głosów
0 odpowiedzi 426 wizyt
pytanie zadane 9 lutego 2022 w C i C++ przez CheF123 Początkujący (450 p.)
+1 głos
2 odpowiedzi 422 wizyt
pytanie zadane 28 stycznia 2017 w C i C++ przez qlucha Obywatel (1,790 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...