Przejdź do treści

Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

Obsługa błędów w MySQLi

środa,

Obsługa błędów w MySQLi

Baza danych jest zewnętrznym zasobem i z różnych przyczyn może być niedostępna, zwłaszcza kiedy fizycznie znajduje się na innej maszynie. Z tego powodu istotną kwestią jest uwzględnienie w skrypcie ewentualnych błędów dotyczących połączenia. Język PHP i rozszerzenie MySQLi zapewniają odpowiednie do realizacji tego celu mechanizmy.

W przykładowym kodzie po próbie nawiązania połączenia następuje wywołanie funkcji mysqli_connect_errno(), która w przypadku wystąpienia błędu zwraca jego numeryczny kod. Jeśli nie udało się nawiązać połączenia, wyświetlana jest informacja o błędzie (mysqli_connect_error()), a skrypt zostaje bezwarunkowo zakończony (die()). W przypadku skryptu wdrożonego na publicznie dostępnej stronie internetowej obsługę błędu połączenia należy rozwiązać trochę inaczej, użytkownik nie jest specjalnie zainteresowany komunikatami zwracanymi przez bazę danych, wystarczy jakaś ogólna informacja o chwilowym braku możliwości pracy z aplikacją. Funkcja mysqli_connect_error() jest przydatna dla programisty szukającego przyczyny problemu.

include 'config.php';

$link = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME);

if (mysqli_connect_errno()) {
    printf("Błąd połączenia: %sn", mysqli_connect_error());
    die();
}

W kolejnej fazie wykonania skryptu kontrolowane jest poprawne wykonanie zapytania. W przypadku wystąpienia wywoływana jest funkcja mysqli_error(), która zwraca komunikat opisujący ostatni zgłoszony błąd. Jeśli zapytanie zakończyło się sukcesem, wyświetlane są uzyskane informacje. Czasami sukces to brak wyników, w takim wypadku zapytanie SQL było poprawne, jednak nie odnaleziono rekordów spełniających jego warunki. Funkcja mysqli_num_rows() zwraca liczbę wierszy otrzymanych w wyniku zapytania. Instrukcja mysqli_fetch_row($result)[0] zwróci pierwszy otrzymany wiersz, w prezentowanym skrypcie jest on jedyny. Zbiór danych pobranych w zapytaniu może być duży, dlatego po wykonaniu wymaganych operacji warto zadbać o zwolnienie pamięci (funkcja mysqli_free_result()).

if ($result = mysqli_query($link, "SELECT POW(2,12)")) {
    printf("Liczba zwróconych wierszy: %d
", mysqli_num_rows($result)); printf("Wynik zapytania: %d", mysqli_fetch_row($result)[0]); mysqli_free_result($result); } else { printf("Błąd: %s", mysqli_error($link)); }

Po wykonaniu całego skryptu połączenie z bazą danych jest automatycznie zamykane, jednak dobrym zwyczajem jest jawne zamykanie połączenia (funkcja mysqli_close()).

mysqli_close($link);

Prezentowany skrypt w całości:

include 'config.php';

$link = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME);

if (mysqli_connect_errno()) {
    printf("Błąd połączenia: %sn", mysqli_connect_error());
    die();
}

if ($result = mysqli_query($link, "SELECT POW(2,12)")) {
    printf("Liczba zwróconych wierszy: %d
", mysqli_num_rows($result)); printf("Wynik zapytania: %d", mysqli_fetch_row($result)[0]); mysqli_free_result($result); } else { printf("Błąd: %s", mysqli_error($link)); } mysqli_close($link);

Podstawy pracy z MySQLi

  1. Wprowadzenie do MySQLi.
  2. Deklarowanie parametrów połączenia z bazą danych.
  3. Obsługa błędów w MySQLi.
  4. Pobieranie rekordów z bazy danych.
  5. Dodawanie rekordów.
  6. Usuwanie rekordów z bazy danych.
Artykuł: Staże w Hiszpanii

Staże w Hiszpanii

Artykuł: Conformité Européenne

Conformité Européenne

Artykuł: Display Stream Compression

Display Stream Compression

Artykuł: High Dynamic Range

High Dynamic Range

Artykuł: PiP i podobne technologie

PiP i podobne technologie

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły