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

Zagadkowa pętla while

Object Storage Arubacloud
+1 głos
203 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,360 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 (252,740 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 391 wizyt
pytanie zadane 27 kwietnia 2022 w Python przez urwis_marek Początkujący (260 p.)
0 głosów
0 odpowiedzi 471 wizyt
pytanie zadane 9 lutego 2022 w C i C++ przez CheF123 Początkujący (450 p.)
+1 głos
2 odpowiedzi 429 wizyt
pytanie zadane 28 stycznia 2017 w C i C++ przez qlucha Obywatel (1,790 p.)

92,554 zapytań

141,399 odpowiedzi

319,535 komentarzy

61,938 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...