INF.03 Kurs 📖 Składnia 🎁 Za darmo Kup kurs · 49,99 zł
📰 Poradniki · aktualizacja 08.11.2026

PHP i mysqli na INF.03 – wzór skryptu, który pasuje do każdego arkusza

Jeśli arkusz INF.03 ma skrypt PHP, prawie zawsze chodzi o to samo: połączyć się z bazą, wykonać zapytanie i wypisać wyniki na stronie. Do tego dochodzi czasem formularz, który dodaje rekord albo filtruje dane. Wystarczy opanować jeden wzór i dopasowywać go do kolejnych arkuszy.

Wzór skryptu: cztery kroki

PHP
<?php
$polaczenie = mysqli_connect('localhost', 'root', '', 'sklep');   // 1. połączenie
$zapytanie = "SELECT nazwa, cena FROM produkty ORDER BY cena DESC;";
$wynik = mysqli_query($polaczenie, $zapytanie);                     // 2. zapytanie

while ($wiersz = mysqli_fetch_array($wynik)) {                     // 3. pętla po wierszach
    echo "<p>" . $wiersz['nazwa'] . " – " . $wiersz['cena'] . " zł</p>";
}

mysqli_close($polaczenie);                                          // 4. zamknięcie
?>
  1. mysqli_connect – serwer localhost, użytkownik root, puste hasło (domyślnie w XAMPP) i nazwa bazy z arkusza.
  2. mysqli_query – wykonuje zapytanie. Najczęściej jest to jedno z zapytań z pliku kwerendy.txt.
  3. mysqli_fetch_array w pętli while – pobiera kolejne wiersze. Do kolumn odwołujesz się po nazwie: $wiersz['nazwa'].
  4. mysqli_close – zamyka połączenie. Na egzaminie to bardzo często osobne kryterium.
🎯 Skrypt jest w pliku .php

Strona ze skryptem PHP musi mieć rozszerzenie .php i być otwierana przez http://localhost/..., a nie dwuklikiem z dysku. Inaczej PHP się nie wykona.

Gdzie wstawić skrypt

Skrypt umieszcza się w miejscu, gdzie mają pojawić się dane – np. w bloku main, w liście albo w tabeli. HTML dookoła zostaje zwykłym HTML-em:

PHP
<main>
    <h2>Nasze produkty</h2>
    <ul>
    <?php
    $polaczenie = mysqli_connect('localhost', 'root', '', 'sklep');
    $wynik = mysqli_query($polaczenie, "SELECT nazwa, cena FROM produkty;");
    while ($wiersz = mysqli_fetch_array($wynik)) {
        echo "<li>{$wiersz['nazwa']} – {$wiersz['cena']} zł</li>";
    }
    mysqli_close($polaczenie);
    ?>
    </ul>
</main>

Wypisywanie danych w tabeli i z obrazkiem

Arkusze często wymagają, żeby każdy rekord był osobnym wierszem tabeli albo blokiem z obrazem:

PHP
while ($wiersz = mysqli_fetch_array($wynik)) {
    echo "<tr><td>{$wiersz['nazwa']}</td><td>{$wiersz['cena']}</td></tr>";
}

while ($wiersz = mysqli_fetch_array($wynik)) {
    echo "<div class='produkt'>";
    echo "<img src='{$wiersz['zdjecie']}' alt='{$wiersz['nazwa']}'>";
    echo "<h3>{$wiersz['nazwa']}</h3>";
    echo "</div>";
}

Formularz, który dodaje rekord

Typowe polecenie: „po kliknięciu przycisku dane z formularza są dodawane do tabeli”. Formularz wysyła dane metodą POST, a skrypt sprawdza, czy pola przyszły:

PHP
<form action="index.php" method="post">
    <input type="text" name="nazwa">
    <input type="number" name="cena">
    <button type="submit">Dodaj</button>
</form>

<?php
if (!empty($_POST['nazwa']) && !empty($_POST['cena'])) {
    $polaczenie = mysqli_connect('localhost', 'root', '', 'sklep');
    $nazwa = $_POST['nazwa'];
    $cena = $_POST['cena'];
    mysqli_query($polaczenie, "INSERT INTO produkty (nazwa, cena) VALUES ('$nazwa', $cena);");
    mysqli_close($polaczenie);
}
?>
ℹ️ Bezpieczeństwo poza egzaminem

Na egzaminie wystarcza prosty zapis jak wyżej. W prawdziwych aplikacjach dane od użytkownika trzeba zabezpieczać przed SQL injection, np. przez zapytania przygotowane (mysqli_prepare).

Najczęstsze błędy w skryptach PHP

objawprzyczyna
na stronie widać kod PHPplik ma rozszerzenie .html albo jest otwarty z dysku, nie przez localhost
Unknown databaseliterówka w nazwie bazy albo baza nie została zaimportowana
Uncaught mysqli_sql_exceptionbłąd w zapytaniu SQL (np. zła nazwa kolumny) – sprawdź je najpierw w phpMyAdmin
Undefined array keynazwa kolumny w $wiersz['...'] inna niż w zapytaniu
polskie znaki jako krzaczkibrak <meta charset="UTF-8"> w dokumencie
nic się nie wypisujezapytanie zwraca zero wierszy – sprawdź warunek WHERE
💡 Najpierw zapytanie, potem PHP

Każde zapytanie sprawdź najpierw w phpMyAdmin. Jeśli tam działa, a w PHP nie – błąd jest w kodzie PHP, nie w SQL.

Wszystkie funkcje z tego poradnika są wyjaśnione w słowniku składni PHP. O samych zapytaniach przeczytasz w poradniku Kwerendy SQL na INF.03.

Przygotuj się do INF.03 z pełnym kursem

62 lekcji od zera, 4 egzaminy próbne z rozwiązaniami, 7 prawdziwych arkuszy CKE 2026 krok po kroku i 334 pytań z wyjaśnieniami. Płacisz raz, dostęp bez limitu czasu.

Zobacz kurs · 49,99 zł

Najpierw chcesz spróbować? Darmowe lekcje i słownik składni