Przygotowane zapytania w PDO
Założenie: Pokażemy, jak używać przygotowanych zapytań w PDO w celu zabezpieczenia aplikacji przed atakami SQL Injection.
Krok po kroku:
- Połączenie z bazą danych: Najpierw nawiążmy połączenie z bazą danych za pomocą PDO.
- Przygotowanie zapytania: Przygotujmy zapytanie SQL, używając placeholderów (np. `?`).
- Wykonanie zapytania: Dodajmy wartość do placeholdera i wykonajmy zapytanie.
- Pobranie wyników: Pobierzmy wyniki zapytania.
$host = 'localhost';
$dbname = 'moja_baza';
$user = 'użytkownik';
$password = 'hasło';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo "Połączenie nieudane: " . $e->getMessage();
}
Ten kod tworzy obiekt PDO, łącząc się z bazą danych MySQL. `try…catch` obsługuje potencjalne błędy połączenia.
$stmt = $pdo->prepare("SELECT * FROM uzytkownicy WHERE imie = ?");
Metoda `prepare()` tworzy przygotowane zapytanie. Znak `?` jest placeholderem dla wartości, które zostaną dodane później.
$imie = 'Jan';
$stmt->execute([$imie]);
Metoda `execute()` wykonuje zapytanie, podając tablicę wartości dla placeholderów. To zapobiega SQL Injection.
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($results as $row) {
echo "ID: " . $row['id'] . ", Imię: " . $row['imie'] . "
";
}
Metoda `fetchAll()` zwraca wszystkie wyniki jako tablicę asocjacyjną. Pętla `foreach` iteruje po wynikach i wyświetla je.
Ten przykład pokazuje podstawy używania przygotowanych zapytań w PDO. Zachęcamy do dalszego zgłębiania tematu, aby w pełni wykorzystać możliwości PDO i zapewnić bezpieczeństwo swoim aplikacjom.