Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Bazy danych PHP

Za pomocą której funkcji języka PHP można ustanowić połączenie z bazą danych o nazwie zwierzaki?

A.
$polacz = sql_connect('localhost', 'root','','zwierzaki');
B.
$polacz = mysqli_connect('localhost', 'root','','zwierzaki');
C.
$polacz = server_connect('localhost', 'root','','zwierzaki');
D.
$polacz = db_connect('localhost', 'root','','zwierzaki');

Pytanie z egzaminu CKE, styczeń 2021 (arkusz EE.09-SG-21.01).

Funkcja mysqli_connect() jest właściwym wyborem, bo należy do rozszerzenia MySQLi w PHP i służy do nawiązywania połączenia z serwerem MySQL/MariaDB. W podanym przykładzie mysqli_connect('localhost', 'root', '', 'zwierzaki') przekazuje kolejno: adres serwera bazy danych, nazwę użytkownika, hasło oraz nazwę konkretnej bazy, czyli zwierzaki. To jest typowy zapis spotykany w prostych aplikacjach webowych, np. przy pobieraniu listy zwierząt ze schroniska, dodawaniu rekordów przez formularz albo wyświetlaniu danych w panelu administracyjnym. Z mojego doświadczenia warto od razu pamiętać o sprawdzaniu, czy połączenie się udało, np. przez mysqli_connect_errno() albo obsługę wyjątków. Dobra praktyka branżowa to także nie trzymać hasła roota w kodzie produkcyjnym, tylko używać osobnego użytkownika bazy z ograniczonymi uprawnieniami. Samo połączenie to dopiero pierwszy krok, ale bez niego PHP nie wykona zapytań SQL na bazie zwierzaki.
W tym pytaniu łatwo pomylić nazwę funkcji, bo wszystkie zaproponowane zapisy wyglądają podobnie i mają sensowne argumenty: host, użytkownik, hasło oraz nazwa bazy danych. Problem jest jednak taki, że w PHP nie wystarczy wymyślić logicznie brzmiącej nazwy funkcji. Interpreter musi znać konkretną funkcję dostarczaną przez język albo zainstalowane rozszerzenie. Nazwy db_connect(), sql_connect() oraz server_connect() nie są standardowymi funkcjami PHP do łączenia się z MySQL. Mogłyby istnieć tylko wtedy, gdyby programista sam je wcześniej zdefiniował, na przykład jako własną funkcję-opakowanie, ale w kontekście typowego pytania egzaminacyjnego nie o to chodzi. Poprawnym standardowym mechanizmem jest mysqli_connect(), czyli funkcja z rozszerzenia MySQLi. Myślowy błąd często polega na tym, że ktoś patrzy na nazwę i wybiera tę, która brzmi najbardziej ogólnie: db_connect, bo przecież łączymy się z database, albo sql_connect, bo pracujemy z SQL. Niestety PHP tak nie działa. W praktyce trzeba znać konkretne API: MySQLi albo PDO. Moim zdaniem PDO jest często wygodniejsze w większych projektach, ale przy prostych zadaniach szkolnych mysqli_connect() jest jak najbardziej poprawne. Warto też pamiętać, że połączenie z bazą powinno być sprawdzane pod kątem błędów, a dane dostępowe nie powinny być wpisywane byle gdzie, szczególnie na prawdziwym serwerze.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.