Wszystkie zagadnienia: PHP
podstawowy egzamin zawodowy INF.03PHPzmienne

Składnia i zmienne w PHP

01

Opis

PHP pojawia się na egzaminie INF.03 w dwóch miejscach. W części praktycznej ostatni rezultat zadania to skrypt „Napisany w języku PHP", który ma „stosować znaczące nazewnictwo zmiennych i funkcji w języku polskim lub angielskim" i wypisywać dane z bazy według wzoru w rodzaju „<nazwa> <punkty>" (arkusz CKE INF.03, czerwiec 2025, zadanie 1). W części pisemnej co sesję pada kilka pytań typu „jaki będzie wynik skryptu PHP", „w jakim typie jest zmienna", „który zapis jest komentarzem" – z kodem na kilka linii i czterema odpowiedziami. To hasło zbiera to, co trzeba wiedzieć o samym języku, zanim zacznie się łączyć z bazą: znaczniki <?php ?>, echo, zmienne z $, typy, napisy w apostrofach i cudzysłowach, sklejanie kropką, tablice i komentarze.

W podstawie programowej odpowiada za to jednostka o programowaniu aplikacji internetowych. Podstawa programowa INF.03.5, efekt 2, kryterium 4: „posługuje się typami prostymi i złożonymi, zmiennymi i operatorami w skryptowych językach programowania" – oraz Podstawa programowa INF.03.5, efekt 4: „Uczeń programuje skrypty wykonywane po stronie serwera", kryterium 1: „programuje w jednym z języków Python, ASP.NET, PHP, JSP", kryterium 2: „stosuje wbudowane instrukcje, funkcje". Informator ilustruje ten efekt pytaniem o typ: instrukcja echo gettype(13.0); wypisuje double (Informator INF.03, zadanie 22).

Cztery zasady, które wynikają z arkuszy i z dokumentacji języka:

  • Kod PHP wykonuje się tylko między <?php a ?>, a plik musi mieć rozszerzenie .php – na egzaminie strona ze skryptem nazywa się np. gry.php i jest jednocześnie pełnym dokumentem HTML5 z deklaracją <!DOCTYPE HTML> (zasady oceniania INF.03, czerwiec 2025, zadanie 1 – streszczenie).
  • Zmienna zaczyna się od $, a wielkość liter ma znaczenie: $nazwa i $Nazwa to dwie różne zmienne (php.net, Variable basics).
  • Wszystkie zmienne mają mieć nazwy znaczące, po polsku lub po angielsku – to osobne kryterium oceniania, warte punkt niezależnie od reszty skryptu (zasady oceniania INF.03, czerwiec 2025, zadanie 1 – streszczenie).
  • Kropka skleja napisy, plus dodaje liczby; od PHP 8.0 plus wiąże mocniej niż kropka (php.net, Operator Precedence) – i to jest źródło większości pułapek w pytaniach pisemnych.

Odbiór danych z formularza ($_POST, isset) opisuje hasło Odbiór danych POST w PHP, pętle i warunki – hasło Instrukcje sterujące w PHP, a połączenie z bazą i pobieranie wierszy – hasło Połączenie z bazą danych przez mysqli. Tu zajmujemy się tylko tym, z czego te skrypty są zbudowane.

02

Skrypt PHP

<?php
// Każdy wynik niżej pochodzi z uruchomienia skryptu w PHP 8.2 (dane jak w arkuszu
// CKE INF.03, czerwiec 2025 – baza gry, gra Mag z 357 punktami)

// 1. Zmienne: nazwa zaczyna się od $, typ wynika z przypisanej wartości
$nazwa = "Mag";          // string (napis)
$punkty = 357;           // int (liczba całkowita)
$cena = 150.0;           // float (liczba zmiennoprzecinkowa)
$dostepna = true;        // bool (logiczny)

// 2. echo wypisuje tekst do strony; kropka skleja napisy
echo "Gra: " . $nazwa . ", punktów: " . $punkty . "\n";
// wynik: Gra: Mag, punktów: 357

// 3. Cudzysłów podstawia wartość zmiennej, apostrof nie
echo "Cena gry $nazwa to $cena zł\n";
// wynik: Cena gry Mag to 150 zł
echo 'Cena gry $nazwa to $cena zł' . "\n";
// wynik: Cena gry $nazwa to $cena zł

// 4. Kropka skleja, plus dodaje
echo $punkty . 1 . "\n";
// wynik: 3571
echo $punkty + 1 . "\n";
// wynik: 358

// 5. Typy: gettype i var_dump
echo gettype($cena) . "\n";
// wynik: double
var_dump($punkty);
// wynik: int(357)
var_dump("357");
// wynik: string(3) "357"

// 6. Tablica indeksowana – numeracja od 0
$gry = ["Czarodziejka", "Kalipso", "Mag"];
echo $gry[0] . " i " . $gry[2] . "\n";
// wynik: Czarodziejka i Mag
echo count($gry) . "\n";
// wynik: 3

// 7. Tablica asocjacyjna – klucz => wartość (tak zwraca mysqli_fetch_assoc)
$gra = ["id" => 6, "nazwa" => "Mag", "punkty" => 357];
echo $gra["nazwa"] . " ma " . $gra["punkty"] . " punktów\n";
// wynik: Mag ma 357 punktów
echo "W cudzysłowie: {$gra['nazwa']}\n";
// wynik: W cudzysłowie: Mag

// 8. Funkcje napisów, o które pyta część pisemna
echo substr("Programowanie w PHP", 3, 5) . "\n";
// wynik: gramo
echo strtoupper("kowalski") . " " . strlen("Mag") . "\n";
// wynik: KOWALSKI 3
$tab = explode(",", "jelenie,sarny,dziki,lisy,borsuki");
echo $tab[1] . " " . $tab[2] . "\n";
// wynik: sarny dziki
?>
03

Krok po kroku

Skrypt z sekcji PHP składa się z pięciu elementów języka. Każdy z nich ma swoje pytanie w części pisemnej i swoje miejsce w skrypcie z części praktycznej.

1. Znaczniki i PHP w środku HTML. Serwer Apache z XAMPP przepuszcza plik .php przez interpreter: wszystko poza <?php … ?> wysyła do przeglądarki bez zmian, a to, co jest w środku, wykonuje i w jego miejsce wstawia wynik echo. Dlatego strona egzaminacyjna to zwykły dokument HTML5 z kilkoma wstawkami PHP tam, gdzie mają się pojawić dane z bazy – i dlatego zasady oceniania wymagają w pliku gry.php deklaracji <!DOCTYPE HTML> i języka strony jak w każdym HTML (zasady oceniania INF.03, czerwiec 2025, zadanie 1 – streszczenie).

<body>
<?php
$nazwa = "Mag";
$punkty = 357;
?>
<h1>Ranking gier</h1>
<ul>
  <li><?php echo $nazwa . " " . $punkty; ?></li>
  <li><?= $nazwa ?> ma <?= $punkty ?> punktów</li>
</ul>
</body>

Wynik w przeglądarce (po uruchomieniu w PHP 8.2): dwa elementy listy Mag 357 oraz Mag ma 357 punktów. Zmienna przypisana w pierwszym bloku jest widoczna w każdym następnym bloku tego samego pliku. Skrót <?= to to samo co <?php echo – wygodny w jednej linii, ale w dłuższych blokach czytelniej jest pisać pełne echo.

2. Zmienne i typy. Zmienną tworzy pierwsze przypisanie, bez słowa var czy let. Nazwa zaczyna się od litery lub podkreślenia, dalej litery, cyfry i podkreślenia; $4site jest niepoprawne, a $nazwa i $Nazwa to dwie różne zmienne (php.net, Variable basics). Typu nie deklarujesz – PHP nadaje go po wartości: 15 to int, "15" to string, 59.85 to float, true to bool. Właśnie o to pytają arkusze pisemne: dla $zmienna1 = 15; $zmienna2 = "15"; $zmienna3 = (string) $zmienna1; tego samego typu są zmienna2 i zmienna3 (arkusz CKE EE.09, styczeń 2023, część pisemna, zad. 5 – klucz C), a var_dump(59.85) wypisuje float(59.85) (arkusz CKE EE.09, styczeń 2023, część pisemna, zad. 6 – klucz B).

$zmienna1 = 15;                    // int
$zmienna2 = "15";                  // string
$zmienna3 = (string) $zmienna1;    // string – rzutowanie
echo gettype($zmienna1);           // integer
echo gettype($zmienna3);           // string
var_dump($zmienna1 == $zmienna2);  // bool(true)  – porównanie wartości
var_dump($zmienna1 === $zmienna2); // bool(false) – porównanie wartości i typu

Dlaczego to ważne: gettype dla liczby z kropką zwraca double (tak nazywa się ten typ historycznie), a var_dump – float; obie nazwy oznaczają jedno i w pytaniach padają zamiennie (Informator INF.03, zadanie 22; arkusz CKE EE.09, styczeń 2020, część pisemna, zad. 5 – klucz D).

3. Napisy: apostrof kontra cudzysłów. W cudzysłowie PHP podstawia wartości zmiennych i rozumie sekwencje \n, \t, \"; w apostrofie nie podstawia niczego, a jedyne sekwencje to \' i \\ (php.net, Strings). To dlatego echo "Cena gry $nazwa" wypisuje Cena gry Mag, a echo 'Cena gry $nazwa' – dosłownie Cena gry $nazwa. Element tablicy w cudzysłowie zapisujesz bez apostrofów wokół klucza ("$gra[nazwa]") albo z klamrami ("{$gra['nazwa']}") – zapis "$gra['nazwa']" jest błędem składni (php.net, Strings).

$gra = ["nazwa" => "Mag", "punkty" => 357];
echo "<li>$gra[nazwa] $gra[punkty]</li>";        // <li>Mag 357</li>
echo "<li>{$gra['nazwa']} {$gra['punkty']}</li>"; // <li>Mag 357</li>
echo '<li>' . $gra['nazwa'] . ' ' . $gra['punkty'] . '</li>'; // to samo

Wybór między cudzysłowem a apostrofem jest najczęściej praktyczny: kod HTML ma w sobie atrybuty w cudzysłowach (<img src="…">), więc wygodniej objąć go apostrofami i dokleić zmienne kropką, jak w trzeciej linii wyżej.

4. Kropka kontra plus. Kropka to operator konkatenacji, czyli sklejania napisów (arkusz CKE E.14, czerwiec 2020, część pisemna, zad. 32 – klucz B). Plus zawsze próbuje dodać liczby: "5" + "3" daje 8, a "5" . "3" daje 53. Od PHP 8.0 plus i minus wiążą mocniej niż kropka (php.net, Operator Precedence), więc $punkty + 1 . "\n" liczy najpierw 358, a potem dokleja znak nowej linii. Napis, który nie jest liczbą, w dodawaniu kończy się w PHP 8 błędem TypeError: Unsupported operand types: string + int – skrypt się zatrzymuje.

echo "5" + "3";      // 8
echo "5" . "3";      // 53
echo "3" . 4 + 1;    // 35  – najpierw 4 + 1, potem sklejenie
echo 2 + 3 . "4";    // 54  – najpierw 2 + 3, potem sklejenie
echo "Ala" . 5;      // Ala5 – liczba zamienia się w napis

5. Tablice. Tablica indeksowana numeruje elementy od zera; asocjacyjna ma klucze tekstowe zapisane strzałką =>. Poprawna definicja tablicy asocjacyjnej to $wiek = array("Anna"=>"35", "Ewa"=>"37", "Oliwia"=>"43"); – z cudzysłowami wokół kluczy i strzałką, nie znakiem równości ani nawiasami kwadratowymi wewnątrz (arkusz CKE EE.09, styczeń 2022, część pisemna, zad. 7 – klucz C; ten sam wzorzec: arkusz CKE E.14, styczeń 2019, część pisemna, zad. 32 – klucz D). Zapis array(…) i […] są równoważne. count($tablica) zwraca liczbę elementów, $tablica[] = … dokłada element na koniec, explode(",", $napis) tnie napis po przecinku do tablicy indeksowanej – stąd wynik sarny dziki dla $tab[1]." ".$tab[2] w skrypcie z sekcji PHP (arkusz CKE EE.09, styczeń 2021, część pisemna, zad. 7 – klucz C).

$gry = array("Czarodziejka", "Kalipso", "Mag"); // indeksy 0, 1, 2
$gry[] = "Kalipso 2";                            // indeks 3
$gra = ["id" => 6, "nazwa" => "Mag"];           // klucze id, nazwa
echo $gry[3] . " / " . $gra["nazwa"];            // Kalipso 2 / Mag

Dlaczego tablica asocjacyjna jest ważna na egzaminie praktycznym: dokładnie taką tablicę zwraca mysqli_fetch_assoc dla każdego wiersza z bazy – klucze to nazwy kolumn z SELECT. Wypisanie wiersza w pętli to więc $wiersz["nazwa"], jak w haśle Połączenie z bazą danych przez mysqli.

Komentarze. Jednoliniowy zaczyna się od // lub #, wieloliniowy jest między /* i */; zapis <!-- --> to komentarz HTML i w PHP nie działa (arkusz CKE EE.09, styczeń 2023, część pisemna, zad. 12 – klucz B; arkusz CKE EE.09, czerwiec 2021, część pisemna, zad. 11 – klucz C; arkusz CKE EE.09, czerwiec 2019, część pisemna, zad. 10 – klucz D). Komentarz HTML działa tylko poza blokiem <?php … ?>.

04

Porównanie

ElementPHPJavaScript
Zmienna$nazwa = "Mag";let nazwa = "Mag";
Wypisanieecho $nazwa; (do strony)console.log(nazwa); (do konsoli)
Sklejanie napisówkropka: $a . $bplus: a + b
Zmienna w napisie"Gra $nazwa" (tylko w cudzysłowie)${nazwa} w szablonie w odwrotnych apostrofach
Tablica indeksowana["a", "b"] lub array("a", "b")["a", "b"]
Tablica asocjacyjna["id" => 6] (klucz => wartość)obiekt {id: 6}
Liczba elementówcount($tab)tab.length
Długość napisustrlen($s)s.length
Wielkie literystrtoupper($s)s.toUpperCase()
Fragment napisusubstr($s, 3, 5) (od, ile)s.substring(3, 8) (od, do)
Typ zmiennejgettype($x), var_dump($x)typeof x
Komentarz//, #, /* *///, /* */
Gdzie działaserwer, przed wysłaniem stronyprzeglądarka, po wczytaniu strony

Na egzaminie

Podstawy PHP są sprawdzane w obu częściach egzaminu, ale inaczej. Część pisemna INF.03 nie jest publikowana przez CKE – w arkuszach zebranych na portalu testy pisemne mają nagłówek EE.09 lub E.14 (2017–2026). Ponieważ zmienne, typy i operatory PHP są w podstawie INF.03.5, te pytania traktujemy jako obowiązujące także dla INF.03.

Część pisemna – „jaki będzie wynik". Pytania o składnię układają się w kilka powtarzalnych wzorców:

Warto znać jeden przypadek z klucza: pytanie o to, dla jakiej wartości $b porównanie $a === $b jest prawdziwe przy $a = 1, dostało w kluczu adnotację „zdający otrzymuje jeden punkt niezależnie od udzielonej odpowiedzi" (arkusz CKE EE.09, styczeń 2021, część pisemna, zad. 5). Sama reguła jest jednak prosta: == porównuje wartości po konwersji, więc 1 == "1" jest prawdą; === porównuje też typ, więc 1 === "1" jest fałszem.

Część praktyczna – skrypt na stronie. Arkusz wymaga skryptu „Napisanego w języku PHP", ze „znaczącym nazewnictwem zmiennych i funkcji w języku polskim lub angielskim", który wypisuje wiersze z bazy według wzoru „<nazwa> <punkty>", „gdzie nawiasy <> oznaczają wartość pobraną z bazy danych" (arkusz CKE INF.03, czerwiec 2025, zadanie 1). Ten sam wzór, z innymi polami, jest w przykładowym zadaniu Informatora: „<id> <nazwa>" na stronie noclegi.php (Informator INF.03, przykład zadania do części praktycznej). W kodzie to jedna linia sklejania:

echo "<li>" . $wiersz["nazwa"] . " " . $wiersz["punkty"] . "</li>";

Za co są punkty. W zasadach oceniania z czerwca 2025 składnia jako taka nie ma własnego kryterium – punkty są za działające połączenie, zapytanie, wypisanie według wzoru i zamknięcie połączenia; osobne, ostatnie kryterium wymaga, żeby w skryptach była przynajmniej jedna zmienna, a nazwy wszystkich zmiennych były po polsku lub angielsku i odzwierciedlały cel zastosowania (zasady oceniania INF.03, czerwiec 2025, zadanie 1 – streszczenie). To samo kryterium, w brzmieniu „znaczące nazewnictwo dla wszystkich zmiennych lub funkcji", jest w zasadach z czerwca 2024 (zasady oceniania INF.03, czerwiec 2024, zadanie 1 – streszczenie). Dwie uwagi z nagłówka zasad mają bezpośredni związek ze składnią: skrypt jest sprawdzany w XAMPP 8.2.12, czyli w PHP 8 – z zasadami pierwszeństwa operatorów i błędami typów opisanymi wyżej; a jeżeli witryna nie uruchamia się z powodu błędów PHP, część kryteriów jest oceniana w kodzie źródłowym (zasady oceniania INF.03, czerwiec 2025, zadanie 1 – streszczenie). Skrypt z literówką, która zatrzymuje interpreter, traci więc punkty za wszystko, co miało być widoczne na stronie – a zachowuje tylko te za instrukcje możliwe do odczytania w kodzie.

06

Pułapki w zadaniach

Zmienna w apostrofach. echo '<li>$nazwa</li>'; wypisze dosłownie $nazwa, bo apostrof nie podstawia zmiennych (php.net, Strings). W przeglądarce widać listę pełną znaków dolara zamiast nazw gier, a kryterium „wyświetla nazwę i punkty zwrócone zapytaniem" nie jest spełnione (zasady oceniania INF.03, czerwiec 2025, zadanie 1 – streszczenie). Naprawa: cudzysłów albo sklejanie kropką.

Plus zamiast kropki. echo $nazwa + " " + $punkty; to w JavaScript sklejanie, a w PHP dodawanie. Dla napisu, który nie jest liczbą, PHP 8 kończy skrypt błędem TypeError: Unsupported operand types – strona urywa się w tym miejscu. Kropka jest operatorem konkatenacji (arkusz CKE E.14, czerwiec 2020, część pisemna, zad. 32 – klucz B); w PHP sklejasz tylko nią.

Brak dolara albo różna wielkość liter. nazwa = "Mag"; bez $ to błąd składni, który zatrzymuje cały plik. $Nazwa = "Mag"; echo $nazwa; uruchomi się, ale wypisze pusty tekst i ostrzeżenie Warning: Undefined variable $nazwa, bo nazwy zmiennych rozróżniają wielkość liter (php.net, Variable basics). Naprawa: jedna konwencja nazw, najlepiej małe litery i podkreślenia.

Klucz tablicy w apostrofach wewnątrz cudzysłowu. echo "$gra['nazwa']"; to błąd składni – w prostym zapisie w cudzysłowie klucz musi być bez apostrofów ("$gra[nazwa]"), a z apostrofami wymaga klamer ("{$gra['nazwa']}") (php.net, Strings). Ten błąd zatrzymuje skrypt w PHP 8, więc strona nie wyświetla nic poza komunikatem.

Liczenie od jedynki. Pierwszy element tablicy ma indeks 0, a pierwszy znak napisu – pozycję 0. Stąd substr("Programowanie w PHP", 3, 5) to gramo, nie ogram (arkusz CKE EE.09, czerwiec 2022, część pisemna, zad. 10 – klucz C), a $tab[1] po explode to drugi element (arkusz CKE EE.09, styczeń 2021, część pisemna, zad. 7 – klucz C). Trzy z czterech odpowiedzi w takich pytaniach są ułożone pod pomyłkę o jeden.

Nazwy zmiennych bez znaczenia. $a, $b, $x w skrypcie egzaminacyjnym kosztują punkt z ostatniego kryterium: nazwy mają odzwierciedlać cel zastosowania i być po polsku lub angielsku (zasady oceniania INF.03, czerwiec 2025, zadanie 1 – streszczenie). $polaczenie, $wynik, $wiersz, $nazwa spełniają je bez dodatkowego wysiłku.

Komentarz HTML wewnątrz PHP. <!-- skrypt 1 --> wpisany między <?php a ?> to błąd składni, który zatrzymuje cały plik – w PHP komentarze to //, # i /* */, a zapis <!-- --> nie jest w PHP stosowany (arkusz CKE EE.09, czerwiec 2019, część pisemna, zad. 10 – klucz D). Komentarz HTML zostawiasz w części HTML pliku, poza blokiem PHP; wewnątrz bloku opisujesz kod przez //.

07

Sprawdź się

Skrypt z arkusza o bazie gry – uzupełnij brakujące fragmenty:

KrokKod
Zmienna z nazwą gry = "Mag";
Sklejenie napisu wzorem nazwa i punktyecho $nazwa " " . $punkty;
Liczba elementów tablicyecho ($gry);

Wyniki i pytania z części pisemnej:

PytanieOdpowiedź
Co wypisze echo "5" . "3";
Co wypisze echo "5" + "3";
Co wypisze echo gettype(13.0);
Jaki typ ma $zmienna2 = "15";
Co wypisze echo substr("Programowanie w PHP", 3, 5);
Jaki indeks ma pierwszy element tablicy?

Wartość zmiennej jest podstawiana w napisie tylko wtedy, gdy napis jest w . Pole nazwa z wiersza pobranego jako tablica asocjacyjna odczytasz przez $wiersz[]. Komentarz jednoliniowy zaczyna się od .

08

Najczęściej zadawane pytania

Czy w skrypcie egzaminacyjnym trzeba zamykać blok znacznikiem ?>

Nie, jeżeli plik kończy się kodem PHP – interpreter przyjmuje brak ?> na końcu pliku. Na egzaminie jednak PHP jest wstawiony w środek dokumentu HTML (po bloku PHP jest jeszcze stopka i zamknięcie </body>), więc każdy blok <?php ma swoje ?>. Brak zamknięcia w środku pliku sprawi, że resztę strony PHP potraktuje jako kod i zatrzyma się z błędem składni.

Czym różni się echo od print?

Obie instrukcje wypisują tekst. echo przyjmuje kilka argumentów po przecinku (echo $a, $b;) i nie zwraca wartości; print przyjmuje jeden argument i zwraca 1, więc może stać w wyrażeniu. W arkuszach zebranych na portalu echo pada w kodzie pytań w 19 plikach PDF (2017–2026), print – w dwóch (arkusz CKE E.14, styczeń 2018, część pisemna; arkusz CKE EE.09, styczeń 2021, część pisemna). Na egzaminie praktycznym używasz echo.

Dlaczego gettype zwraca double, a var_dump pokazuje float?

To ta sama liczba zmiennoprzecinkowa. gettype zwraca nazwę double z powodów historycznych, var_dump i dokumentacja używają nazwy float. W pytaniach pisemnych padają obie nazwy: gettype(13.0) daje double (Informator INF.03, zadanie 22), a var_dump(59.85) daje float(59.85) (arkusz CKE EE.09, styczeń 2023, część pisemna, zad. 6 – klucz B).

Czy "15" i 15 to na egzaminie to samo?

Nie. "15" to napis (string), 15 to liczba całkowita (int) – pytanie o typy tych zmiennych ma w kluczu odpowiedź, że tego samego typu są tylko napis i wynik rzutowania (string) (arkusz CKE EE.09, styczeń 2023, część pisemna, zad. 5 – klucz C). Porównanie == uzna je za równe, === – nie. W arytmetyce PHP zamienia "15" na liczbę, więc "15" + 1 daje 16.

Jak wypisać znak dolara albo cudzysłów w napisie?

W cudzysłowie poprzedzasz je odwrotnym ukośnikiem: "Cena: 5\$", "Nazwa: \"Mag\"". W apostrofach dolar jest zwykłym znakiem ('Cena: 5$'), a apostrof w środku wymaga \' (php.net, Strings). Najprościej: napis z cudzysłowami HTML obejmij apostrofami, napis ze zmiennymi – cudzysłowem.

Czy tablicę zapisywać jako array() czy w nawiasach kwadratowych?

Oba zapisy są równoważne i oba są poprawne w PHP 8 (XAMPP 8.2.12, w którym sprawdzany jest skrypt). W pytaniach pisemnych pada array(…) (arkusz CKE EE.09, styczeń 2022, część pisemna, zad. 7 – klucz C), więc trzeba umieć go czytać; w swoim skrypcie możesz pisać krócej – ["id" => 6].

Skąd wiedzieć, czy błąd jest w PHP czy w SQL?

Błąd składni PHP (brak średnika, brak $, cudzysłów bez pary) pojawia się w przeglądarce jako Parse error z numerem linii i strona nie wyświetla nic – nawet HTML sprzed błędu. Błąd zapytania SQL pojawia się dopiero w miejscu mysqli_query jako wyjątek mysqli_sql_exception, a wcześniejsza część strony jest widoczna. Na egzaminie najpierw uruchom stronę z pustym blokiem PHP, potem dopisuj instrukcje – każdy błąd będzie w ostatnio dopisanej linii.

↗

Powiązane zagadnienia