Łączenie z MySQL za pomocą PDO
Utwórz połączenie PDO z użyciem DSN, nazwy użytkownika i hasła
Łączenie z MySQL za pomocą PDO to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP Academy zawiera 4 lekcji w sumie.
Czym jest PDO?
PDO (PHP Data Objects) to warstwa abstrakcji dostępu do baz danych. Jedno API działa z MySQL, PostgreSQL, SQLite i innymi bazami — wystarczy zmienić DSN.
DSN
Ciąg DSN (Data Source Name) identyfikuje sterownik, host, port i nazwę bazy danych.
<?php
$dsn = "mysql:host=127.0.0.1;port=3306;dbname=myapp;charset=utf8mb4";Tworzenie instancji PDO
Przekaż DSN, nazwę użytkownika i hasło do konstruktora PDO. Użyj bloku try/catch, aby obsłużyć błędy połączenia.
<?php
try {
$pdo = new PDO(
"mysql:host=127.0.0.1;dbname=myapp;charset=utf8mb4",
"db_user",
"db_pass"
);
} catch (PDOException $e) {
die("Connection failed: ".$e->getMessage());
}Tryb obsługi błędów
Ustaw tryb obsługi błędów tak, aby zgłaszał wyjątki — dzięki temu błędy nigdy nie zostaną pominięte bez ostrzeżenia.
<?php
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);Domyślny tryb pobierania
Skonfiguruj domyślny sposób pobierania danych — najwygodniejsze są tablice asocjacyjne.
<?php
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);Pełna konfiguracja połączenia
Najlepsza praktyka: utwórz PDO tylko raz, ustawiając wszystkie atrybuty, a następnie współdziel tę instancję.
<?php
function createPDO(): PDO {
return new PDO(
"mysql:host=127.0.0.1;dbname=myapp;charset=utf8mb4",
"root", "secret",
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
]
);
}Emulowane zapytania przygotowane
Ustawienie ATTR_EMULATE_PREPARES na false powoduje używanie rzeczywistych zapytań przygotowanych po stronie serwera — jest to bezpieczniejsze i wydajniejsze.
charset=utf8mb4
Zawsze określaj charset=utf8mb4 w DSN. Zapewnia to obsługę pełnego zakresu Unicode, w tym emoji. Nigdy nie używaj starego aliasu utf8.
Wykonywanie prostego zapytania
Używaj query() tylko w przypadku instrukcji, które nie zawierają danych wejściowych użytkownika.
<?php
$stmt = $pdo->query("SELECT COUNT(*) as total FROM users");
$row = $stmt->fetch();
echo $row["total"];exec() dla instrukcji innych niż SELECT
exec() wykonuje instrukcję, która nie zwraca wyników, i zwraca liczbę zmodyfikowanych wierszy.
<?php
$count = $pdo->exec("DELETE FROM sessions WHERE expires_at < NOW()");
echo "Deleted $count expired sessions";Połączenia trwałe
PDO obsługuje połączenia trwałe za pomocą PDO::ATTR_PERSISTENT => true. W środowiskach PHP-FPM zazwyczaj preferowana jest pula połączeń.
Podsumowanie
Twórz PDO z użyciem DSN, ustaw ERRMODE_EXCEPTION i FETCH_ASSOC oraz wyłącz emulowane zapytania przygotowane. Nigdy nie wywołuj query() z danymi dostarczonymi przez użytkownika — używaj zapytań przygotowanych.
Szybkie sprawdzenie
Który atrybut sprawia, że PDO zgłasza wyjątki w przypadku błędów?
Często zadawane pytania
Czy lekcja „Łączenie z MySQL za pomocą PDO” jest bezpłatna?
Tak — pełny tekst „Łączenie z MySQL za pomocą PDO” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Łączenie z MySQL za pomocą PDO”?
Utwórz połączenie PDO z użyciem DSN, nazwy użytkownika i hasła Ćwiczysz PHP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć PHP Academy?
Nie wymagamy żadnego doświadczenia. PHP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Łączenie z MySQL za pomocą PDO”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji PHP Academy?
Tak. Każda lekcja PHP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Łączenie z MySQL za pomocą PDO
- Instrukcje przygotowane i bindowanie parametrów
- Pobieranie wyników za pomocą PDO
- Transakcje z PDO