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
.htmlzamiast.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
queryzwrócifalse, 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.