Przejdź do treści
Pewniak INF.03Trudny

Skrypt PHP pobierający dane z bazy

Połączenie z bazą, zapytanie i wypisanie wyników w pętli — schemat, który w arkuszach INF.03 powtarza się rok po roku. Wraz z obsługą błędów i najczęstszymi pułapkami.

Ostatnia część arkusza INF.03 to zwykle skrypt, który łączy się z bazą, wykonuje zapytanie i wypisuje wynik na stronie. Schemat jest zawsze ten sam i warto go umieć napisać z pamięci, bo na wymyślanie struktury nie ma czasu.

1. Szablon, który wystarcza na egzaminie

<?php
$polaczenie = new mysqli("localhost", "root", "", "sklep");

if ($polaczenie->connect_errno) {
  die("Błąd połączenia: " . $polaczenie->connect_error);
}

$polaczenie->set_charset("utf8");

$wynik = $polaczenie->query("SELECT nazwa, cena FROM produkty");

while ($wiersz = $wynik->fetch_assoc()) {
  echo "<p>" . $wiersz["nazwa"] . " — " . $wiersz["cena"] . " zł</p>";
}

$polaczenie->close();
?>

Cztery kroki, zawsze w tej kolejności

Połącz się, sprawdź błąd połączenia, wykonaj zapytanie, przejdź wynik pętlą. Jeśli zapamiętasz tę czwórkę, odtworzysz skrypt niezależnie od tego, jakiej bazy dotyczy zadanie.

2. Ustawienie kodowania

Wywołanie set_charset("utf8") wygląda na drobiazg, a decyduje o tym, czy polskie znaki z bazy wyświetlą się poprawnie. Bez niego strona pokaże znaki zapytania w miejscu ogonków — i egzaminator zobaczy to natychmiast, bo wszystkie nazwy w bazach CKE są polskie.

3. Pułapki, które psują skrypt

  • Plik zapisany jako .html zamiast .php. Serwer nie wykona kodu, tylko pokaże go jako tekst.
  • Nazwa bazy lub tabeli przepisana z literówką. Kod jest poprawny, a strona pusta — sprawdź nazwy znak po znaku.
  • Brak sprawdzenia, czy zapytanie się powiodło. Gdy query zwróci false, pętla wywala błąd zamiast wypisać cokolwiek.
  • Apostrofy i cudzysłowy pomieszane przy sklejaniu tekstu. W PHP zmienne rozwijają się w cudzysłowie, w apostrofie nie.

Zapytania, które tu wykonujesz, opisaliśmy osobno w pewniaku o czterech kwerendach SQL, a podstawy języka w teorii INF.03.