KWALIFIKACJA INF3 - STYCZEŃ 2023

PYTANIE NR 10.
W bibliotece mysqli języka PHP, aby uzyskać ostatni komunikat o błędzie można zastosować funkcję
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
mysqli_error() służy do pobrania ostatniego tekstowego komunikatu błędu związanego z operacjami MySQLi (np. po nieudanym zapytaniu). mysqli_errno() zwraca numer błędu, a nie jego opis. Pozostałe funkcje dotyczą innych aspektów pracy z wynikami i diagnostyką, nie "ostatniego komunikatu".

Pełne wyjaśnienie:

W MySQLi można diagnozować problemy na dwa podstawowe sposoby: przez kod błędu oraz przez opis tekstowy. Pytanie dotyczy "ostatniego komunikatu o błędzie", czyli właśnie opisu tekstowego.

Poprawna jest odpowiedź "mysqli_error()", ponieważ ta funkcja zwraca łańcuch znaków opisujący ostatni błąd, który wystąpił podczas pracy z MySQLi (typowo po nieudanym wykonaniu zapytania lub operacji na połączeniu). Taki komunikat jest przydatny w debugowaniu oraz w logach serwera.

Dlaczego pozostałe propozycje nie pasują:

  • "mysqli_errno()" zwraca liczbę (numer/kod) ostatniego błędu. To inna informacja niż komunikat tekstowy. Kod bywa przydatny do obsługi wyjątków warunkowych, ale nie jest "komunikatem".
  • "mysqli_error_list()" odnosi się do listy błędów i nie jest typowym wyborem, gdy pytanie dotyczy pojedynczego "ostatniego komunikatu". W testach najczęściej rozróżnia się właśnie parę: error (opis) vs errno (kod).
  • "mysqli_use_result()" dotyczy sposobu pobierania wyników zapytania (tryb niebuforowany), a nie raportowania błędów. Można jej użyć przy dużych zbiorach danych, ale nie odpowiada na potrzebę uzyskania komunikatu błędu.

Wskazówka egzaminacyjna: jeśli w treści pojawia się słowo "komunikat" lub "opis", szukaj funkcji zwracającej tekst (error). Jeśli jest mowa o "numerze/kodzie" błędu, pasuje odpowiednik errno.

Dodatkowe pytania

Dodatkowe pytania (FAQ):

mysqli_error() zwraca tekstowy opis ostatniego błędu MySQLi (łańcuch znaków).

W praktyce używa się jej po nieudanym zapytaniu, aby dowiedzieć się, dlaczego operacja się nie powiodła (np. błąd składni SQL, brak tabeli, brak uprawnień).

mysqli_error() zwraca komunikat tekstowy błędu, a mysqli_errno() zwraca numer/kod błędu.

Opis pomaga w debugowaniu, a kod bywa używany do warunkowej obsługi wybranych sytuacji (np. rozróżnianie typów problemów bez parsowania tekstu).

Błąd warto sprawdzać zawsze po operacji, która może się nie powieść, np. po wykonaniu zapytania, przygotowaniu statementu lub połączeniu z bazą.

W aplikacji produkcyjnej zamiast wyświetlać błąd użytkownikowi lepiej go zalogować i pokazać komunikat ogólny.

Komunikat z mysqli_error() może ujawniać szczegóły bazy danych (nazwy tabel, strukturę zapytań, konfigurację), co zwiększa ryzyko ataków.

Dobra praktyka: logowanie szczegółów po stronie serwera i prezentowanie użytkownikowi neutralnej informacji o problemie.

Nie. mysqli_error_list() dotyczy zwracania listy informacji o błędach (w określonych kontekstach), a pytania egzaminacyjne zwykle rozróżniają prostą parę: opis (error) i kod (errno).

Gdy pytanie mówi o "ostatnim komunikacie", standardowo chodzi o funkcję zwracającą pojedynczy opis.

W MySQLi do diagnostyki połączenia często używa się właściwości/ funkcji związanych z connect error/errno (zależnie od stylu proceduralnego lub obiektowego).

Na egzaminie kluczowe jest rozróżnienie: komunikat tekstowy vs numer błędu oraz to, czy błąd dotyczy połączenia, czy zapytania.

Typowe przyczyny to: błąd składni SQL, odwołanie do nieistniejącej tabeli/kolumny, brak uprawnień użytkownika bazy, naruszenie ograniczeń (np. unikalności), problemy z kodowaniem lub niezgodny typ danych.

Komunikat pomaga szybko zawęzić źródło problemu.

Najczęstszy błąd to zamiana funkcji zwracającej komunikat z funkcją zwracającą numer błędu, bo nazwy są bardzo podobne.

Drugim problemem jest wybieranie funkcji "na pamięć" bez powiązania słowa z treści ("komunikat" = tekst, "numer" = liczba).

Tak, MySQLi można stosować proceduralnie lub obiektowo. W stylu obiektowym analogicznie korzysta się z właściwości/metod obiektu połączenia, które dostarczają informacji o błędzie.

Na egzaminie ważne jest rozpoznanie, że chodzi o opis błędu, niezależnie od stylu zapisu.

Przećwicz scenariusze: błędne dane logowania, błędne SQL, brak tabeli i naruszenie ograniczeń. Po każdej operacji sprawdzaj, co zwraca mechanizm błędów (opis vs kod).

Warto robić notatkę skojarzeń: error = tekst, errno = numer.

info

To pytanie poprawnie rozwiązuje 58% zdających egzamin. średnie

W praktyce zawodowej kluczowe jest to, że mysqli_error() służy do pobrania ostatniego tekstowego komunikatu błędu związanego z operacjami MySQLi (np. po nieudanym zapytaniu).

Źródła:

  • PHP Manual: mysqli_error — https://www.php.net/manual/en/mysqli.error.php (dostęp: 2026-03-02)
  • PHP Manual: mysqli_errno — https://www.php.net/manual/en/mysqli.errno.php (dostęp: 2026-03-02)
  • PHP Manual: MySQLi overview (opis funkcji i diagnostyki) — https://www.php.net/manual/en/book.mysqli.php (dostęp: 2026-03-02)

Materiały:

  • Dokumentacja PHP: sekcja MySQLi (funkcje error/errno)
  • Ćwiczenia: celowe generowanie błędów zapytań i logowanie komunikatów
  • Materiały o dobrych praktykach: nieujawnianie błędów bazy danych użytkownikowi, logowanie po stronie serwera

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego