Przejdź do głównej treści
INF.0321 kroków · ok. 25 min · poziom podstawowy

phpMyAdmin: utworzenie bazy i import pliku .sql z arkusza INF.03

Oprogramowanie: XAMPP 8.2.12, phpMyAdmin 5.2.1, Windows 10

Jak założyć bazę o nazwie z arkusza, zaimportować plik .sql w phpMyAdmin i co zrobić przy błędzie #1046, imporcie do złej bazy i krzakach.

Prawie każdy arkusz INF.03 zaczyna się od tych samych poleceń: „Utwórz bazę danych o nazwie …, z zestawem polskich znaków” i „Do bazy zaimportuj tabele z pliku ….sql z rozpakowanego archiwum”. Za import jest osobne kryterium w kluczu (R.1.1 - import udokumentowany zrzutem import), a od bazy zależą wszystkie zapytania i skrypt PHP.

Tutorial pokazuje całą czynność na prawdziwym pliku opona.sql z archiwum pliki8 arkusza INF.03-11-25.06-SG (opony), a potem cztery pomyłki wywołane naprawdę: import bez zaznaczonej bazy (błąd #1046), import do złej bazy, plik z własnym CREATE DATABASE i USE (fotografia.sql z INF.03-05-25.06-SG) oraz zły zestaw znaków pliku.

Zrzuty pochodzą z XAMPP 8.2.12 (phpMyAdmin 5.2.1, MariaDB 10.4.32) w Windows 10, 11 października 2026 r. phpMyAdmin w XAMPP ma tłumaczenie polskie tylko częściowo, dlatego część przycisków jest po angielsku (Create, Import, Browse).

  1. Etap 1: Utworzenie bazy

    Kroki 1-3

    Krok 1: phpMyAdmin i lista baz

    ok. 1 min

    Przy uruchomionych Apache i MySQL wpisz w przeglądarce localhost/phpmyadmin. Po lewej stronie jest drzewo baz. Na świeżej instalacji XAMPP są tam tylko bazy systemowe (information_schema, mysql, performance_schema, phpmyadmin) i pusta baza test. Żadnej z nich nie ruszaj - bazę z arkusza zakładasz sama lub sam.

    Typowe błędy

    Jeśli zamiast phpMyAdmin widzisz czerwone komunikaty „Nie można nawiązać połączenia” albo „Cannot connect: invalid settings”, serwer MySQL nie działa. Uruchom go w panelu XAMPP (przycisk Start w wierszu MySQL) i odśwież stronę.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 1
  2. Krok 2: Nazwa bazy i porównywanie znaków

    ok. 2 min

    Kliknij New na górze drzewa (albo zakładkę Databases). W polu nazwy wpisz nazwę dokładnie z arkusza - tu opony (arkusz INF.03-11-25.06-SG: „Utwórz bazę danych o nazwie opony, z zestawem polskich znaków (np. utf8_polish_ci)”). Z listy obok wybierz porównywanie z arkusza: utf8_polish_ci albo utf8_unicode_ci - arkusze podają jedno z nich jako przykład. Kliknij Create.

    Typowe błędy

    Nazwa bazy to jedno słowo z arkusza, z zachowaniem wielkości liter (np. gryTowarzyskie w INF.03-07-26.06-SG, atlas_drzew w INF.03-11-26.06-SG). Literówka w nazwie wychodzi dopiero w skrypcie PHP - mysqli_connect nie znajdzie bazy. Porównywanie wybierz z listy (wpisanie pierwszych liter, np. utf8_po, przewija listę), a nie zostawiaj pustego pola - wtedy baza dostanie domyślne porównywanie serwera, a nie to z polecenia.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 2
  3. Krok 3: Pusta baza jest gotowa

    ok. 1 min

    phpMyAdmin od razu przechodzi do nowej bazy: na górze widać Database: opony, a w drzewie po lewej pojawia się opony - na razie bez tabel. To ważne: baza jest teraz zaznaczona, więc import trafi właśnie do niej.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 3
  4. Etap 2: Import pliku .sql

    Kroki 4-10

    Krok 4: Zakładka Import

    ok. 1 min

    Przy zaznaczonej bazie opony kliknij zakładkę Import. Nagłówek musi brzmieć Importowanie do bazy danych "opony". Kliknij Wybierz plik.

    Typowe błędy

    Jeśli nagłówek brzmi „Importowanie do bieżącego serwera”, żadna baza nie jest zaznaczona - najpierw kliknij nazwę bazy w drzewie po lewej. Co się dzieje w przeciwnym razie, pokazuje część „Gdy coś pójdzie nie tak”.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 4
  5. Krok 5: Plik .sql z rozpakowanego archiwum

    ok. 1 min

    Przejdź do folderu, do którego rozpakowano archiwum z arkusza (tu pliki8 na pulpicie), zaznacz plik .sql (tu opona.sql) i kliknij Otwórz. Plik ma rozszerzenie .sql i typ „Plik SQL” - to zwykły tekst z poleceniami CREATE TABLE i INSERT INTO.

    Typowe błędy

    Archiwum .7z z arkusza trzeba najpierw rozpakować (hasło jest w treści zadania). phpMyAdmin nie zaimportuje pliku z wnętrza archiwum 7z.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 5
  6. Krok 6: Zestaw znaków pliku: utf-8

    ok. 1 min

    Obok przycisku widać nazwę wybranego pliku. Pole Character set of the file zostaw na utf-8 - pliki z arkuszy INF.03 są zapisane w UTF-8 i tylko przy tym ustawieniu polskie litery z danych trafią do bazy poprawnie.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 6
  7. Krok 7: Przycisk Import

    ok. 1 min

    Resztę opcji zostaw domyślną: format SQL, włączone Enable foreign key checks. Przewiń stronę na sam dół i kliknij Import.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 7
  8. Krok 8: Import zakończony sukcesem

    ok. 1 min

    Zielony pasek „Import zakończony sukcesem, wykonano 24 zapytań. (opona.sql)” i nowe tabele w drzewie po lewej (klient, opony, zamowienie) to dowód poprawnego importu. Pod paskiem phpMyAdmin wypisuje każde wykonane zapytanie. Właśnie ten widok arkusze każą udokumentować zrzutem import - jak go zrobić, opisuje tutorial o zrzutach.

    Typowe błędy

    Liczba zapytań zależy od pliku - w innym arkuszu będzie inna. Ważne, żeby nie było czerwonego paska Error.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 8
  9. Krok 9: Kontrola: tabele i liczba rekordów

    ok. 1 min

    Kliknij nazwę bazy w drzewie. Zakładka Structure pokazuje tabele z liczbą rekordów (tu 9, 27 i 325) i porównywaniem napisów każdej tabeli (utf8_polish_ci). Porównywanie tabel pochodzi z pliku .sql - polecenia CREATE TABLE zawierają własne COLLATE, więc tabele dostają zestaw z dumpu, a nie ten wybrany przy tworzeniu bazy.

    Typowe błędy

    Liczby rekordów w kolumnie Rekordy dla tabel InnoDB bywają przybliżone. Dokładną liczbę pokaże Browse albo zapytanie SELECT COUNT(*) FROM tabela;.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 9
  10. Krok 10: Kontrola: polskie litery w danych

    ok. 1 min

    Kliknij tabelę z polskimi znakami (tu klient) - otworzy się zakładka Browse. Rekord 7 to Elżbieta Kościow: litery ż i ś wyglądają poprawnie, czyli plik został wczytany z właściwym zestawem znaków.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 10
  11. Etap 3: Gdy coś pójdzie nie tak

    Kroki 11-21

    Krok 11: Pułapka 1: import bez zaznaczonej bazy

    ok. 1 min

    Gdy przed kliknięciem Import żadna baza nie jest zaznaczona (np. po kliknięciu logo phpMyAdmin albo ikony domku), zakładka importuje do bieżącego serwera. Nagłówek brzmi wtedy „Importowanie do bieżącego serwera”.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 11
  12. Krok 12: Błąd #1046 - Nie wybrano żadnej bazy danych

    ok. 1 min

    Plik z arkusza nie zawiera polecenia USE, więc serwer nie wie, w której bazie utworzyć tabele, i przerywa import komunikatem #1046 - Nie wybrano żadnej bazy danych. Żadna tabela nie powstała. Kliknij bazę w drzewie, otwórz Import jeszcze raz i wybierz plik ponownie.

    Typowe błędy

    Zielony pasek nad błędem pochodzi z wcześniejszego importu w tej samej sesji - o wyniku tego importu decyduje czerwony blok Error. Wycinek pliku w komunikacie („Baza danych: oponeum”) to tylko komentarz z dumpu, a nie nazwa, której masz użyć - nazwę bazy podaje treść arkusza.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 12
  13. Krok 13: Pułapka 2: zaznaczona zła baza

    ok. 1 min

    Druga pomyłka jest cicha: jeśli w drzewie zaznaczona jest inna baza (tu test), nagłówek importu brzmi „Importowanie do bazy danych "test"”. Zanim klikniesz Import, zawsze przeczytaj ten nagłówek.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 13
  14. Krok 14: Tabele wylądowały w bazie test

    ok. 1 min

    Import kończy się sukcesem, ale tabele klient, opony i zamowienie są w bazie test, a baza opony z arkusza zostaje pusta. Zrzut import z takim widokiem nie pokazuje importu do bazy z arkusza, a zapytania wykonane na bazie opony nic nie zwrócą.

    Typowe błędy

    Najprostsza naprawa: zaimportuj plik jeszcze raz - tym razem do właściwej bazy - a z bazy test usuń przypadkowe tabele (kolejne kroki).

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 14
  15. Krok 15: Usuwanie tabel z niewłaściwej bazy

    ok. 2 min

    W bazie test kliknij Check all, a z listy Z zaznaczonymi wybierz Drop. phpMyAdmin pyta, czy wykonać DROP TABLE dla zaznaczonych tabel - pole Enable foreign key checks jest zaznaczone.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 15
  16. Krok 16: Błąd #1451 przy usuwaniu

    ok. 1 min

    Przy włączonym sprawdzaniu kluczy obcych serwer odmawia: #1451 - Cannot delete or update a parent row: a foreign key constraint fails. Tabela zamowienie wskazuje na klient i opony, więc tych dwóch nie wolno usunąć, dopóki istnieje relacja. Usunięta została tylko zamowienie - w bazie zostały klient i opony.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 16
  17. Krok 17: Usunięcie bez sprawdzania kluczy obcych

    ok. 1 min

    Zaznacz pozostałe tabele i znowu wybierz Drop. Tym razem odznacz Enable foreign key checks i kliknij Tak. Tabele znikną, a baza test znów będzie pusta.

    Typowe błędy

    Wyłączaj sprawdzanie kluczy tylko przy sprzątaniu po pomyłce. Przy imporcie pliku z arkusza zostaw je włączone.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 17
  18. Krok 18: Pułapka 3: dump z CREATE DATABASE i USE

    ok. 2 min

    Część plików z arkuszy zawiera własne CREATE DATABASE i USE. Tak jest w fotografia.sql z arkusza INF.03-05-25.06-SG. Tu baza została założona pod nazwą fotografie (z literówką) i plik zaimportowano do niej. Import kończy się sukcesem, ale w drzewie widać dwie bazy: pustą fotografie i nową fotografia z tabelami zamowienia i zdjecia.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 18
  19. Krok 19: Zajrzyj do pliku przed importem

    ok. 1 min

    Otwórz plik .sql w Notatniku i poszukaj na początku wierszy CREATE DATABASE i USE. W fotografia.sql są to CREATE DATABASE IF NOT EXISTS z nazwą fotografia oraz USE z tą samą nazwą. Polecenie USE przełącza import na bazę z pliku, niezależnie od tego, która była zaznaczona.

    Typowe błędy

    Gdy plik ma CREATE DATABASE z tą samą nazwą co w arkuszu, nic złego się nie dzieje - baza i tak trafia pod właściwą nazwę. Kłopot pojawia się tylko przy literówce w nazwie Twojej bazy: dostajesz dwie bazy, a zapytania i skrypt PHP działają na tej z pliku. Usuń wtedy pustą bazę z literówką, żeby zrzut import był jednoznaczny.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 19
  20. Krok 20: Pułapka 4: zły zestaw znaków pliku

    ok. 1 min

    W polu Character set of the file lista zawiera wiele kodowań. Tu przez pomyłkę wybrano windows-1250 (polska strona kodowa Windows), choć plik jest w UTF-8.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 20
  21. Krok 21: Krzaki zamiast polskich liter

    ok. 1 min

    Import przechodzi bez błędu, ale dane są zepsute: zamiast „Elżbieta Kościow” w tabeli klient jest „ElĹĽbieta KoĹ›ciow”. Tych krzaków nie naprawi skrypt PHP ani znacznik meta - są zapisane w bazie. Usuń tabele (albo całą bazę) i zaimportuj plik jeszcze raz z ustawieniem utf-8.

    Typowe błędy

    Sprawdzaj polskie litery w jednej tabeli zaraz po imporcie (Browse). Krzaki zauważone dopiero na gotowej stronie kuszą, żeby szukać błędu w PHP, a winny jest import.

    Zrzut ekranu po tym kroku
    Zrzut ekranu po kroku 21

Podgląd

Sprawdź się

Pytania egzaminacyjne z tego zakresu w trybie nauki:

Instalacja XAMPP w Windows: Apache, MySQL i pierwszy plik PHP

INF.03XAMPP 8.2.12, Windows 10ok. 40 min

Skąd pobrać XAMPP, jak go zainstalować, uruchomić Apache i MySQL, otworzyć phpMyAdmin i co zrobić, gdy port 80 jest zajęty.

Oddanie pracy na egzaminie INF.03: folder, nazwy plików i przeglądarka.txt

INF.03Windows 10, XAMPP 8.2.12, 7-Zip 24.09ok. 20 min

Folder z numerem zdającego, archiwum z hasłem, praca w htdocs, przeglądarka.txt i lista plików - według arkuszy INF.03 z lat 2025-2026.

Strona PHP pokazuje kod, pustą stronę albo błąd - przyczyny i naprawa

INF.03XAMPP 8.2.12 (PHP 8.2.12), Windows 10ok. 25 min

Dlaczego XAMPP pokazuje kod PHP zamiast wyniku, co znaczą Parse error, Undefined array key i Fatal error mysqli oraz skąd biorą się krzaki.

Zrzut ekranu wyniku zapytania w phpMyAdmin (kw1, kw2...) na egzamin INF.03

INF.03XAMPP 8.2.12, phpMyAdmin 5.2.1, Windows 10ok. 20 min

Co ma być na zrzucie kw1-kw4 i import według kluczy CKE, jak zrobić zrzut całego ekranu do PNG i JPEG i jak uniknąć pliku kw1.png.png.

Autor: .