Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Bazy danych PHP

Zadaniem funkcji PHP o nazwie mysqli_num_rows() jest

A. zwrócić liczbę wierszy znajdujących się w wyniku zapytania.
Dobrze. mysqli_num_rows zwraca liczbę wierszy w wyniku zapytania SELECT.
B. zwrócić rekord, którego numer podany został w parametrze funkcji.
Źle. Do przejścia na wiersz o danym numerze służy mysqli_data_seek, a pobiera się go funkcją fetch.
C. zwrócić kolejny rekord z wynikami zapytania.
Źle. Kolejny rekord wyniku pobierają funkcje fetch, np. mysqli_fetch_row lub mysqli_fetch_assoc.
D. ponumerować rekordy w bazie danych.
Źle. Funkcja niczego nie numeruje. Kolejne identyfikatory rekordów nadaje kolumna AUTO_INCREMENT.

Opracowane na podstawie zadania CKE, czerwiec 2016 (arkusz E.14-X-16.05): Funkcje mysql_* usunięto w PHP 7 - zadanie przepisano na odpowiedniki mysqli_*.

Funkcja mysqli_num_rows($wynik) zwraca liczbę wierszy w wyniku zapytania SELECT. Argumentem jest obiekt wyniku zwrócony przez mysqli_query(), a nie połączenie z bazą. Typowy kod: $wynik = mysqli_query($db, "SELECT * FROM uczniowie"); $ile = mysqli_num_rows($wynik);.

Liczbę wierszy wykorzystuje się np. do komunikatu „Nie znaleziono wyników”, gdy wynosi 0, albo jako granicę pętli for. Dla poleceń INSERT, UPDATE i DELETE liczbę zmienionych wierszy podaje inna funkcja: mysqli_affected_rows($db). Dawna funkcja mysql_num_rows działała tak samo, ale całe rozszerzenie mysql usunięto w PHP 7.

Zapamiętaj: num_rows to liczba wierszy wyniku, a nie ich numeracja ani treść.

Nazwa funkcji zawiera słowa num i rows, więc łatwo uznać, że numeruje wiersze. Funkcja niczego w bazie nie zmienia i nie nadaje numerów rekordom. Kolejne numery w tabeli nadaje kolumna z atrybutem AUTO_INCREMENT, a nie funkcja PHP.

Pobieranie kolejnego rekordu wyniku to zadanie funkcji z rodziny fetch: mysqli_fetch_row() albo mysqli_fetch_assoc(). Każde ich wywołanie przesuwa się o jeden wiersz dalej.

Rekord o wskazanym numerze nie jest zwracany przez żadną funkcję typu num. Do ustawienia wskaźnika na konkretnym wierszu służy mysqli_data_seek($wynik, 5), a sam wiersz trzeba potem pobrać funkcją fetch. Zapamiętaj: num_rows to liczba wierszy, fetch to pobranie wiersza.

Wszystkie te funkcje przyjmują ten sam argument, czyli wynik mysqli_query(), dlatego łatwo je pomylić. Różnią się tym, co zwracają: liczbę albo wiersz.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.