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.
- Instalacja XAMPP: https://www.apachefriends.org/pl/index.html
- 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.
- Wejdź na stronę:
http://localhost/phpmyadmin/
. - W zakładce “Bazy danych” stwórz nową bazę danych, np. moja_baza.
- 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