Którą funkcję PHP należy wywołać, aby poznać liczbę kolumn w wyniku zapytania SELECT zapisanym w zmiennej
$wynik = mysqli_query($polacz, "SELECT imie, nazwisko, wiek FROM zwierzaki");
A.
mysqli_fetch_row($wynik);
B.
mysqli_affected_rows($wynik);
C.
mysqli_num_fields($wynik);
D.
mysqli_num_rows($wynik);
Poprawna funkcja to mysqli_num_fields($wynik);. Zmienna $wynik przechowuje rezultat zapytania SELECT zwrócony przez mysqli_query. Funkcja mysqli_num_fields odczytuje z tego rezultatu metadane pól, czyli informację o tym, ile kolumn znajduje się w zestawie wynikowym. W podanym zapytaniu SELECT imie, nazwisko, wiek FROM zwierzaki są wybierane trzy kolumny, więc wywołanie zwróci wartość 3. Do zapamiętania: mysqli_num_fields(wynik_zapytania) służy do liczenia kolumn, a nie rekordów. W praktyce przydaje się to przy dynamicznym wyświetlaniu tabel HTML, gdy kod ma sam ustalić liczbę pól w wyniku zapytania. Częsta pułapka polega na pomyleniu liczby kolumn z liczbą wierszy.
W tym pytaniu chodzi o liczbę kolumn w wyniku zapytania SELECT, a nie o pobieranie danych ani liczbę rekordów. mysqli_num_rows($wynik); zwraca liczbę wierszy, czyli rekordów znajdujących się w rezultacie SELECT. Byłaby trafna, gdyby pytanie dotyczyło tego, ile zwierzaków spełnia warunki zapytania. mysqli_affected_rows($wynik); nie służy do badania struktury wyniku SELECT. Ta funkcja dotyczy liczby wierszy zmienionych przez operacje takie jak INSERT, UPDATE lub DELETE i wywołuje się ją dla połączenia z bazą, a nie dla zestawu wynikowego. mysqli_fetch_row($wynik); pobiera jeden wiersz wyniku jako tablicę indeksowaną numerycznie, więc służy do odczytu danych, nie do liczenia kolumn. Poprawne wywołanie to mysqli_num_fields($wynik);, ponieważ fields oznacza pola, czyli kolumny rezultatu zapytania. Typowy błąd myślowy polega na utożsamieniu wierszy, pól i pobierania rekordu z tą samą operacją.