0Pricing
PHP Academy · Lekcja

Instrukcje przygotowane

Zabezpiecz zapytania do bazy danych za pomocą instrukcji przygotowanych

Instrukcje przygotowane to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 5 z 6. 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 6 lekcji w sumie.

Przegląd zapytań przygotowanych

Zapytania przygotowane

Witamy w kolejnej lekcji! W tej lekcji poznają Państwo zapytania przygotowane oraz dowiedzą się, jak zwiększają one bezpieczeństwo i wydajność interakcji z bazą danych. Zacznijmy!

Instrukcje przygotowane — ilustracja 1

Czym są zapytania przygotowane?

Czym są zapytania przygotowane?

Zapytania przygotowane to funkcja systemów zarządzania bazami danych, która umożliwia bezpieczne i wydajne wykonywanie zapytań SQL. Oddzielają one kod SQL od danych, zapobiegając atakom SQL injection.

Przykład: Używanie symboli zastępczych (:name, :email) zamiast bezpośredniego umieszczania danych użytkownika w zapytaniu.

Dlaczego warto używać zapytań przygotowanych?

Dlaczego warto używać zapytań przygotowanych?

Zapytania przygotowane oferują kilka korzyści:

  • Bezpieczeństwo: Zapobiegają SQL injection, odpowiednio przetwarzając dane wejściowe użytkownika.
  • Wydajność: Umożliwiają ponowne użycie tej samej instrukcji z różnymi danymi, skracając czas analizowania zapytania.
  • Łatwiejsze utrzymanie: Sprawiają, że kod jest łatwiejszy do odczytania i debugowania.

Najważniejsza informacja: Podczas pracy z danymi dostarczonymi przez użytkownika zawsze należy używać zapytań przygotowanych.

Tworzenie zapytania przygotowanego

Tworzenie zapytania przygotowanego

Aby utworzyć zapytanie przygotowane, należy wykonać następujące kroki:

  1. Należy napisać zapytanie SQL z symbolami zastępczymi.
  2. Należy przygotować zapytanie za pomocą połączenia z bazą danych.
  3. Należy przypisać wartości do symboli zastępczych.
  4. Należy wykonać instrukcję.

Przykład:

Wskazówka: Do łatwego przypisywania wartości należy używać tablic asocjacyjnych.

<?php
  $sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
  $stmt = $pdo->prepare($sql);
  $stmt->execute(["name" => "Alice", "email" => "alice@mail.com"]);
?>

Przypisywanie wartości

Przypisywanie wartości

Do przypisywania wartości do symboli zastępczych należy używać metod bindParam() lub bindValue(). Przykład:

<?php
  $stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
  $stmt->bindParam(":name", $name);
  $stmt->bindParam(":email", $email);

  $name = "Bob";
  $email = "bob@mail.com";
  $stmt->execute();
?>

Używanie zapytań przygotowanych dla zapytań SELECT

Używanie zapytań przygotowanych dla zapytań SELECT

Zapytania przygotowane działają ze wszystkimi typami zapytań SQL, w tym z SELECT. Przykład:

Wskazówka: Do pobierania wielu wierszy należy używać fetchAll().

<?php
  $sql = "SELECT * FROM users WHERE name = :name";
  $stmt = $pdo->prepare($sql);
  $stmt->execute(["name" => "Alice"]);
  $result = $stmt->fetch(PDO::FETCH_ASSOC);

  echo "Name: " . $result["name"] . ", Email: " . $result["email"];
?>

Ponowne używanie zapytań przygotowanych

Ponowne używanie zapytań przygotowanych

Zapytania przygotowane można ponownie wykorzystywać z różnymi wartościami, zwiększając wydajność. Przykład:

<?php
  $stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");

  $users = [
    ["name" => "Charlie", "email" => "charlie@mail.com"],
    ["name" => "Dave", "email" => "dave@mail.com"]
  ];

  foreach ($users as $user) {
    $stmt->execute($user);
  }

  echo "Multiple records inserted successfully!";
?>

Zapobieganie SQL injection

Zapobieganie SQL injection

Zapytania przygotowane zabezpieczają znaki specjalne w danych wejściowych użytkownika, zapobiegając atakom SQL injection. Przykład:

<?php
  $sql = "SELECT * FROM users WHERE email = :email";
  $stmt = $pdo->prepare($sql);
  $stmt->execute(["email" => "' OR 1=1; --"]);
  $result = $stmt->fetch();

  if ($result) {
    echo "User found.";
  } else {
    echo "No user found.";
  }
?>

Świetnie!

Świetnie!

Gratulacje! Opanowali Państwo używanie zapytań przygotowanych w PHP do zabezpieczania interakcji z bazą danych. W następnej lekcji poznają Państwo zaawansowane techniki tworzenia zapytań z użyciem JOIN i agregacji. Programujmy dalej!

Instrukcje przygotowane — ilustracja 10

Często zadawane pytania

Czy lekcja „Instrukcje przygotowane” jest bezpłatna?

Tak — pełny tekst „Instrukcje przygotowane” 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 6 lekcji w sumie.

Co nauczysz się w „Instrukcje przygotowane”?

Zabezpiecz zapytania do bazy danych za pomocą instrukcji przygotowanych Ć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 5 z 6.

Ile czasu zajmuje lekcja „Instrukcje przygotowane”?

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

  1. Wprowadzenie do baz danych
  2. Łączenie z bazą danych MySQL
  3. Zarządzanie tabelami
  4. Wykonywanie operacji CRUD
  5. Instrukcje przygotowane
  6. Praca z PDO
← Powrót do PHP Academy