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:

  1. Połączenie z bazą danych: Najpierw nawiążmy połączenie z bazą danych za pomocą PDO.
  2. 
    $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.

  3. Przygotowanie zapytania: Przygotujmy zapytanie SQL, używając placeholderów (np. `?`).
  4. 
    $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.

  5. Wykonanie zapytania: Dodajmy wartość do placeholdera i wykonajmy zapytanie.
  6. 
    $imie = 'Jan';
    $stmt->execute([$imie]);
    				

    Metoda `execute()` wykonuje zapytanie, podając tablicę wartości dla placeholderów. To zapobiega SQL Injection.

  7. Pobranie wyników: Pobierzmy wyniki zapytania.
  8. 
    $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.

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *