KWALIFIKACJA INF3 - PAŹDZIERNIK 2016

PYTANIE NR 36.
Zadaniem metody mysqli_select_db() lub wyboru bazy w konstruktorze PDO jest
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
mysqli_select_db() oraz ustawienie dbname w PDO służą do wskazania aktywnej bazy danych dla danego połączenia. Nie realizują one samego połączenia z serwerem, nie wybierają tabeli i nie wykonują kwerendy pobierającej dane — te zadania wymagają osobnych wywołań (np. wykonania zapytania SQL).

Pełne wyjaśnienie:

W aplikacjach PHP pracujących z MySQL trzeba rozróżnić kilka kroków: nawiązanie połączenia z serwerem, wybór bazy danych oraz wykonanie zapytania (kwerendy). Metoda/funkcja mysqli_select_db() (a w PDO wskazanie bazy przez parametr dbname w DSN podczas tworzenia obiektu) odpowiada właśnie za ustawienie, na której bazie ma pracować dane połączenie. Dzięki temu kolejne zapytania wykonywane przez to połączenie dotyczą wskazanej bazy.

Poprawna jest odpowiedź: "określić bazę, z której będą pobierane dane." — bo wybór bazy determinuje kontekst działania zapytań (np. które tabele są "widoczne" bez podawania pełnej nazwy z prefiksem bazy).

Pozostałe odpowiedzi opisują inne czynności:

  • "połączyć bazę danych z serwerem SQL." — połączenie dotyczy serwera (hosta) i uwierzytelnienia (login/hasło). W MySQLi robi to np. mysqli_connect lub new mysqli(...), a w PDO: new PDO(...). Sam wybór bazy jest krokiem dodatkowym lub częścią konfiguracji DSN.
  • "określić tabelę, z której będą pobierane dane." — tabela jest wybierana dopiero w treści zapytania SQL (np. w klauzuli FROM). Nie ma osobnej "metody wyboru tabeli" analogicznej do wyboru bazy dla całego połączenia.
  • "pobrać dane z bazy danych na podstawie kwerendy." — pobieranie danych wymaga wykonania zapytania (np. SELECT) i odczytu wyniku (fetch). Sam wybór bazy nie zwraca rekordów, tylko ustawia kontekst dla przyszłych zapytań.

Wskazówka egzaminacyjna: jeśli w treści pojawia się "select_db/dbname", chodzi o wybór bazy, a nie o SQL SELECT (pobieranie rekordów). To częsta pułapka wynikająca z podobieństwa słów.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
mysqli_select_db() ustawia aktywną bazę danych dla danego połączenia MySQLi. Od tego momentu kolejne zapytania wykonywane przez to połączenie dotyczą wskazanej bazy (o ile w SQL nie podasz innej bazy jawnie). To nie jest funkcja do pobierania danych, tylko do ustawienia kontekstu pracy.
Bo mysql_select_db() należała do starego rozszerzenia ext/mysql, które zostało wycofane i usunięte z PHP. W nowszych wersjach należy używać MySQLi lub PDO. W praktyce w PHP 7+ wywołanie mysql_* kończy się błędem typu "undefined function".
W PDO bazę wybiera się zwykle w momencie tworzenia połączenia, podając ją w DSN jako dbname, np. w formacie: mysql:host=...;dbname=.... Dzięki temu połączenie od razu "wie", na jakiej bazie ma pracować. Potem wykonujesz zapytania metodami PDO (prepare/query).
W MySQLi często podaje się nazwę bazy już przy tworzeniu połączenia, np. w konstruktorze obiektu (parametr bazy) albo jako parametr funkcji łączącej. Wtedy osobne wywołanie mysqli_select_db() nie jest potrzebne. To wygodne i zmniejsza ryzyko pracy na złej bazie.
Wybór bazy ustawia kontekst całego połączenia (jak "katalog" z tabelami). Wybór tabeli odbywa się w zapytaniu SQL, np. w klauzuli FROM, i dotyczy konkretnej operacji (SELECT/UPDATE/DELETE). Baza to "poziom wyżej" niż tabela.
Nie. mysqli_select_db() nie wykonuje kwerendy i nie zwraca rekordów. Jej rola to tylko ustawienie, która baza jest aktywna dla połączenia. Pobieranie danych realizuje się dopiero przez wykonanie zapytania (np. SELECT) i odczytanie wyniku z obiektu rezultatu.
Najczęściej wtedy, gdy jedno połączenie ma obsłużyć różne bazy (np. tenantów w systemie wielofirmowym) albo gdy aplikacja łączy się raz, a potem przełącza kontekst w zależności od modułu. W wielu projektach lepiej jednak tworzyć osobne połączenia lub jawnie wskazywać bazę w konfiguracji.
Bo słowo "select" kojarzy się z instrukcją SQL SELECT (pobieranie danych). W select_db "select" oznacza "wybierz bazę", czyli ustaw kontekst połączenia. To klasyczny błąd wynikający z podobieństwa nazw, a nie z realnej funkcji metody.
Typowe skutki to: brak oczekiwanych tabel ("table doesn't exist"), odczyt lub zapis do złych danych (np. testowych zamiast produkcyjnych), problemy z uprawnieniami oraz trudne do wykrycia błędy logiczne. Dlatego wybór bazy (MySQLi/PDO) powinien być jasny i spójny z konfiguracją środowiska.
Oba rozwiązania są poprawne. MySQLi jest ściśle związane z MySQL i ma styl proceduralny lub obiektowy. PDO daje wspólny interfejs dla różnych baz (łatwiejsza migracja) i także wspiera przygotowane zapytania. Na egzaminie ważne jest rozumienie: oba pozwalają wskazać bazę i bezpiecznie wykonywać zapytania.
info

To pytanie poprawnie rozwiązuje 61% zdających egzamin. średnie

W praktyce zawodowej kluczowe jest to, że mysqli_select_db() oraz ustawienie dbname w PDO służą do wskazania aktywnej bazy danych dla danego połączenia.

Źródła:

  • PHP Manual: mysql_select_db — informacja o deprecjacji i usunięciu ext/mysql, https://www.php.net/manual/en/function.mysql-select-db.php (dostęp: 2026-03-01)
  • PHP Manual: mysqli_select_db, https://www.php.net/manual/en/mysqli.select-db.php (dostęp: 2026-03-01)
  • PHP Manual: PDO_MYSQL DSN (parametr dbname), https://www.php.net/manual/en/ref.pdo-mysql.connection.php (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja PHP: MySQLi (opis mysqli_select_db oraz mysqli::select_db)
  • Dokumentacja PHP: PDO MySQL (DSN i parametr dbname)
  • Materiały szkolne do INF.03/INF.3 z działu: łączenie PHP z bazą danych, wykonywanie zapytań SQL

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego