Lekcja 9 – Podstawy operacji na bazach danych MySQL z PHP

Podstawy operacji na bazach danych MySQL z PHP – wprowadzenie

Bazy danych są kluczowym elementem nowoczesnych aplikacji webowych. Przechowują dane takie jak informacje o użytkownikach, produkty w sklepie internetowym, treści artykułów czy komentarze. PHP jest doskonale zintegrowany z MySQL, jedną z najpopularniejszych baz danych. W tej lekcji dowiesz się, jak łączyć się z bazą danych MySQL, wstawiać, odczytywać, aktualizować i usuwać dane za pomocą PHP.

Instalacja i konfiguracja MySQL

Aby pracować z bazą danych MySQL w PHP, potrzebujesz lokalnego środowiska zainstalowanego z serwerem MySQL (np. XAMPP lub MAMP). Możesz również używać zewnętrznej bazy danych na serwerze.

  1. Instalacja XAMPP: https://www.apachefriends.org/pl/index.html
  2. Uruchamianie MySQL w XAMPP: W XAMPP kontroluj uruchomienie serwera MySQL za pomocą panelu sterowania.

Tworzenie bazy danych i tabeli

Zanim przejdziemy do pracy z PHP, stwórzmy bazę danych i tabelę za pomocą narzędzia phpMyAdmin, które jest częścią XAMPP/MAMP.

  1. Wejdź na stronę: http://localhost/phpmyadmin/.
  2. W zakładce “Bazy danych” stwórz nową bazę danych, np. moja_baza.
  3. Następnie przejdź do zakładki SQL i wpisz następujące zapytanie, aby utworzyć tabelę uzytkownicy:
CREATE TABLE uzytkownicy (
  id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  imie VARCHAR(30) NOT NULL,
  email VARCHAR(50) NOT NULL,
  data_rejestracji TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Tabela uzytkownicy będzie przechowywała ID użytkownika, jego imię, adres e-mail oraz datę rejestracji.

Łączenie się z bazą danych w PHP

Aby łączyć się z bazą danych MySQL w PHP, użyjemy funkcji mysqli_connect(). Poniżej przykład, jak nawiązać połączenie:

<?php
  $servername = "localhost"; // Serwer bazy danych
  $username = "root"; // Domyślna nazwa użytkownika w XAMPP
  $password = ""; // Domyślne hasło w XAMPP (puste)
  $dbname = "moja_baza"; // Nazwa bazy danych

  // Tworzenie połączenia
  $conn = mysqli_connect($servername, $username, $password, $dbname);

  // Sprawdzanie połączenia
  if (!$conn) {
    die("Połączenie nieudane: " . mysqli_connect_error());
  }
  echo "Połączono pomyślnie!";
?>

W tym kodzie nawiązujemy połączenie z serwerem MySQL, a następnie łączymy się z bazą danych moja_baza. Jeśli połączenie się nie powiedzie, wyświetli się komunikat o błędzie.

Wstawianie danych do bazy

Aby wstawić dane do bazy, używamy zapytania SQL INSERT INTO, które pozwala dodać nowe wiersze do tabeli. Poniżej przykład wstawiania danych do tabeli uzytkownicy.

Przykład:

<?php
  // Połączenie z bazą danych
  $conn = mysqli_connect("localhost", "root", "", "moja_baza");

  // Sprawdzanie połączenia
  if (!$conn) {
    die("Połączenie nieudane: " . mysqli_connect_error());
  }

  // Zapytanie SQL do wstawienia danych
  $sql = "INSERT INTO uzytkownicy (imie, email) VALUES ('Jan Kowalski', 'jan@example.com')";

  if (mysqli_query($conn, $sql)) {
    echo "Nowy rekord został dodany!";
  } else {
    echo "Błąd: " . $sql . "<br>" . mysqli_error($conn);
  }

  // Zamknięcie połączenia
  mysqli_close($conn);
?>

W powyższym przykładzie wstawiamy nowego użytkownika o imieniu “Jan Kowalski” i adresie e-mail “jan@example.com“. Jeśli operacja się powiedzie, zostanie wyświetlony komunikat, że rekord został dodany.

Odczytywanie danych z bazy danych

Aby odczytać dane z bazy, używamy zapytania SQL SELECT. Poniżej znajduje się przykład, jak odczytać wszystkie dane z tabeli uzytkownicy i wyświetlić je na stronie.

Przykład:

<?php
  // Połączenie z bazą danych
  $conn = mysqli_connect("localhost", "root", "", "moja_baza");

  // Sprawdzanie połączenia
  if (!$conn) {
    die("Połączenie nieudane: " . mysqli_connect_error());
  }

  // Zapytanie SQL do odczytu danych
  $sql = "SELECT id, imie, email, data_rejestracji FROM uzytkownicy";
  $result = mysqli_query($conn, $sql);

  if (mysqli_num_rows($result) > 0) {
    // Wyświetlanie wyników
    while ($row = mysqli_fetch_assoc($result)) {
      echo "ID: " . $row["id"] . " - Imię: " . $row["imie"] . " - E-mail: " . $row["email"] . " - Data rejestracji: " . $row["data_rejestracji"] . "<br>";
    }
  } else {
    echo "Brak wyników.";
  }

  // Zamknięcie połączenia
  mysqli_close($conn);
?>

Wynik tego kodu to wyświetlenie wszystkich użytkowników zapisanych w tabeli uzytkownicy w formacie:

ID: 1 - Imię: Jan Kowalski - E-mail: jan@example.com - Data rejestracji: 2024-01-01 12:34:56

Aktualizowanie danych w bazie

Aktualizowanie danych w bazie danych wykonujemy za pomocą zapytania SQL UPDATE. Poniżej znajduje się przykład, jak zaktualizować adres e-mail użytkownika o określonym ID.

Przykład:

<?php
  // Połączenie z bazą danych
  $conn = mysqli_connect("localhost", "root", "", "moja_baza");

  // Sprawdzanie połączenia
  if (!$conn) {
    die("Połączenie nieudane: " . mysqli_connect_error());
  }

  // Zapytanie SQL do aktualizacji danych
  $sql = "UPDATE uzytkownicy SET email='nowy@example.com' WHERE id=1";

  if (mysqli_query($conn, $sql)) {
    echo "Dane zostały zaktualizowane.";
  } else {
    echo "Błąd: " . mysqli_error($conn);
  }

  // Zamknięcie połączenia
  mysqli_close($conn);
?>

W powyższym przykładzie aktualizujemy adres e-mail użytkownika o ID równym 1.

Usuwanie danych z bazy

Usuwanie danych wykonujemy za pomocą zapytania SQL DELETE. Poniżej przykład, jak usunąć użytkownika o określonym ID.

Przykład:

<?php
  // Połączenie z bazą danych
  $conn = mysqli_connect("localhost", "root", "", "moja_baza");

  // Sprawdzanie połączenia
  if (!$conn) {
    die("Połączenie nieudane: " . mysqli_connect_error());
  }

  // Zapytanie SQL do usunięcia danych
  $sql = "DELETE FROM uzytkownicy WHERE id=1";

  if (mysqli_query($conn, $sql)) {
    echo "Użytkownik został usunięty.";
  } else {
    echo "Błąd: " . mysqli_error($conn);
  }

  // Zamknięcie połączenia
  mysqli_close($conn);
?>

W powyższym przykładzie usuwamy użytkownika o ID równym 1 z tabeli uzytkownicy.

Zabezpieczenie przed SQL Injection

SQL Injection to jeden z najczęstszych ataków na bazy danych, który polega na wstrzyknięciu złośliwego kodu do zapytania SQL. Aby chronić swoje aplikacje przed tym atakiem, zawsze powinno się używać funkcji mysqli_real_escape_string() lub przygotowanych zapytań (prepared statements).

Przykład zabezpieczenia za pomocą mysqli_real_escape_string():

<?php
  $imie = mysqli_real_escape_string($conn, $_POST['imie']);
  $email = mysqli_real_escape_string($conn, $_POST['email']);

  $sql = "INSERT INTO uzytkownicy (imie, email) VALUES ('$imie', '$email')";
?>

Podsumowanie

W tej lekcji nauczyliśmy się, jak łączyć się z bazą danych MySQL za pomocą PHP, a także jak wykonywać podstawowe operacje na danych, takie jak wstawianie, odczytywanie, aktualizowanie i usuwanie. Bazy danych są kluczowym elementem dynamicznych aplikacji webowych, a PHP i MySQL oferują potężne narzędzia do zarządzania danymi w aplikacjach internetowych.

Gratulacje! Ukończyłeś lekcję 9.
Przejdź teraz do lekcji 10 >> Prepared Statements w PHP i bezpieczeństwo aplikacji


Spis Treści - darmowy kurs PHP

Wprowadzenie: Instalacja środowiska PHP
Lekcja 1: Podstawy składni PHP
Lekcja 2: Funkcje i instrukcje warunkowe w PHP
Lekcja 3: Pętle w PHP
Lekcja 4: Tablice w PHP
Lekcja 5: Dodatkowe podstawy funkcji w PHP
Lekcja 6: Praca z formularzami HTML w PHP
Lekcja 7: Obsługa plików w PHP
Lekcja 8: Sesje i ciasteczka w PHP
Lekcja 9: Podstawy operacji na bazach danych MySQL z PHP
Lekcja 10: Prepared Statements w PHP i bezpieczeństwo aplikacji
Lekcja 11: Zarządzanie użytkownikami – rejestracja, logowanie i autoryzacja w PHP
Lekcja 12: Wzorce projektowe w PHP – wprowadzenie do wzorca MVC
Lekcja 13: Zaawansowane techniki pracy z bazami danych w PHP
Lekcja 14: Testowanie jednostkowe w PHP z PHPUnit
Lekcja 15: Tworzenie i korzystanie z API RESTful w PHP
Lekcja 16: Obsługa plików JSON i XML w PHP

Dodatki
- Spis najważniejszych funkcji PHP