PHP - bazy danych

uruchamianie bazy danych w XAMPP

Po uruchomieniu modułu XAMPP i serwera Apache startujemy moduł MySQL

tabele SQL

Sprawdzamy, czy wszystko działa:

tabele SQL

Uruchamiamy moduł zarządzania bazą phpMyAdmin

tabele SQL

Domyślnie uruchamia się moduł zarządzania bazą phpMyAdmin

tabele SQL

Jeśli nie, podajemy dane logowania

tabele SQL

tworzenie nowej bazy danych

Wybieramy zakładkę [Bazy danych]

  • nazdajemy nazwę
  • określamy stronę kodową znaków utf8_polish_ci
  • wybieramy [Utwórz]
tabele SQL

Po utworzeniu pojawia się ona w zewstawie baz:

tabele SQL

Możemy teraz dodawać nowe tabele lub importować je z pliku .sql

tabele SQL

łączenie z bazą danych - PHP

Przyły łączeniu z bazą danych konieczne są następujące informacje:

  • nazwa hosta (adres serwera) zazwychaj wpisujemy tu host lokalny: localhost
  • nazwa użytkownika - dla ćwiczeń w XAMPP - root
  • hasło użytkownika
  • nazwa bazy danych
Łączenie funkcyjne
$link = mysqli_connect('localhost', 'root', 'hasło', 'nazwa bazy danych');

Przy łączeniu pobieramy uchwyt do bazy - poprawne łączenie - lub wyświetlamy komunikat o błędzie.

<?php
	$link = mysqli_connect('localhost', 'root', 'hasło', 'nazwa bazy danych')
	or die ("Nie można połaczyć się z bazą danych.");
?>

Dodatkowo ustalamy zestaw znaków UTF-8

<?php
	if (!mysqli_set_charset($link, "utf8")) {
		printf("Błąd ładowania zestawu znaków utf8: %s\n", mysqli_error($link));
		exit();
	}
?>
Łączenie obiektowe
$mysqli = new mysqli('localhost', 'root', 'hasło', 'nazwa bazy danych');

Kod łączenia z bazą i ustalenie strony kodowej UTF8:

<?php
	$mysqli = new mysqli('localhost','root','','kalendarz');

	if ($mysqli -> connect_errno) {
		echo "Błąd łączenia z bazą danych MySQL: " . $mysqli -> connect_error;
		exit();
	}
	$mysqli -> set_charset("utf8");
?>

zapytania do baz danych

SELECT

SELECT - zapytanie te służy do wyświetlenia tabeli wraz z zawartością.

	SELECT * FROM zadania;
Takie zapytanie pobierze nam całą zawartość tabeli zadania.

Jeżeli chcemy pobrać tylko określone kolumny to zamiast "*"", wpisujemy nazwy interesujących nas kolumn:

	SELECT dataZadania, wpis FROM zadania;

Filtrowanie danych.
Do zapytania dodajemy klauzulę WHERE stosując znaki porównania =, <, <=, >, >=, <>

	SELECT * FROM zadania WHERE dataZadania="2025-01-30";
Uzyskamy wszystkie rekordy z tabeli zadania spełniające ten warunek.

Sortowanie danych.
Do zapytania dodajemy klauzulę ORDER BY

	SELECT * FROM zadania ORDER BY dataZadania;
Uzyskamy w kolejności rosnącej dodająć na końcu DESC - w kolejności malejącej - według kolumny dataZadnia.

składnia PHP - postać funkcyjna

Aby zadać pytanie do bazy musimy użyć funkcji:
mysqli_query($link, $query);
Funkcja wymaga dwóch argumentów:

  • $link - "uchwyt" do bazy danych tworzony podczas łączenia
  • $query - zapytanie formatowane jako ciąg tekstowy.

Przykład:
	$query = "SELECT * FROM zadania";
	$wynik = mysqli_query($link, $query);
Do bazy danych wysłaliśmy zapytanie, które należy przetworzyć.

Do pobrania wyników możemy użyć jednej z następujących funkcji:

  • $tablica = mysqli_fetch_all($wynik);
    Pobiera wszystkie wiersze jako tablicę asocjacyjną, tablicę numeryczną lub obie.
  • $row = mysqli_fetch_row($wynik);
    Pobiera następny wiersz zestawu wyników jako tablicę wyliczeniową.
  • $row = mysqli_fetch_array($wynik);
    Pobiera następny wiersz zestawu wyników jako tablicę asocjacyjną, tablicę numeryczną lub obie.
  • $row = mysqli_fetch_assoc($wynik);
    Pobiera następny wiersz zestawu wyników jako tablicę asocjacyjną.

Jednym z lepszych typów pobierania danych jest tablica asocjacyjna. W takim przypadku klucze tablicy odpowiadają nazwom pól tablicy SQL.

Przykład:
Dla tablicy: tabele SQL Wyświetlenie wszystkich elementów tej tablicy, z sortowaniem względem daty, następuje po wykonaniu kodu.
<?php
	$query = "SELECT * FROM zadania ORDER BY dataZadania";
	if($wynik = mysqli_query($link, $query)) {
		while($row = mysqli_fetch_assoc($wynik)) {
			echo $row["dataZadania"];
			echo "<br>";
			echo $row["wpis"];
			echo "<br>";
			echo $row["miesiac"];
			echo "<br>";
			echo $row["rok"];
			echo "<hr>";
		}
	}
?>

składnia PHP - postać obiektowa

Definiowanie zapytania:
$sql = "SELECT * FROM zadania";
$result = $mysqli -> query($sql);

gdzie $mysqli jest obiektem utworzonym w momencie łączenia.

Do bazy danych wysłaliśmy zapytanie, które należy przetworzyć.

Do pobrania wyników możemy użyć jednej z następujących funkcji:

  • $tablica = $result -> fetch_all();
    Pobiera wszystkie wiersze jako tablicę asocjacyjną, tablicę numeryczną lub obie.

    Przykład wyświetlenia wszystkich elementów tablicy zadania:

    <?php
    	$mysqli = new mysqli("localhost","root","","kalendarz");
    
    	if ($mysqli -> connect_errno) {
    		echo "Błąd łączenia z bazą danych MySQL: " . $mysqli -> connect_error;
    		exit();
    	}
    	$mysqli -> set_charset("utf8");
    
    	$sql = "SELECT * FROM zadania";
    	$result = $mysqli -> query($sql);
    
    	$tablica = $result -> fetch_all();
    	foreach ($tablica as $key1 => $value1) {
    		echo "$key1: -> ";
    		foreach ($value1 as $key2 => $value2) {
    			echo "<br>$key2 : $value2";
    		}
    		echo "<hr>";
    	}
    	
    	$result -> free_result();
    	$mysqli -> close();	
    ?>
    Wynik działania kodu (pierwsze trzy rekordy):
    	0: ->
    	0 : 1
    	1 : 2020-07-01
    	2 : Początek wakacji
    	3 : lipiec
    	4 : 2020
    	1: ->
    	0 : 2
    	1 : 2020-07-02
    	2 : Projekt z programowania
    	3 : lipiec
    	4 : 2020
    	2: ->
    	0 : 3
    	1 : 2020-07-03
    	2 :
    	3 : lipiec
    	4 : 2020
    
  • $row = $result -> fetch_row();
    Pobiera następny wiersz zestawu wyników jako tablicę wyliczeniową.
  • $row = $result -> fetch_array($wynik);
    Pobiera następny wiersz zestawu wyników jako tablicę asocjacyjną, tablicę numeryczną lub obie.
  • $row = $result -> fetch_assoc($wynik);
    Pobiera następny wiersz zestawu wyników jako tablicę asocjacyjną.

Jednym z lepszych typów pobierania danych jest tablica asocjacyjna. W takim przypadku klucze tablicy odpowiadają nazwom pól tablicy SQL.

Przykład:
Wyświetlenie wszystkich elementów tablicy:
<?php
	$sql = "SELECT * FROM zadania";
	$result = $mysqli -> query($sql);
	
		while($row = $result -> fetch_assoc()) {
			echo $row["dataZadania"];
			echo "<br>";
			echo $row["wpis"];
			echo "<br>";
			echo $row["miesiac"];
			echo "<br>";
			echo $row["rok"];
			echo "<hr>";
		}
	
?>

INSERT

INSERT - zapytanie te służy do dodawania rekordów do tabeli wraz z zawartością.

	INSERT INTO zadania (column1, column2, column3, ...) VALUES ('value1', 'value2', 'value3', ...);
Takie zapytanie doda w kolumnie column1 wartość value1 itd.

składnia PHP

Przykład:
Dla tablicy z poprzedniego przykładu dodanie rekordu następuje po wykonaniu kodu.
<?php
	$query = "INSERT INTO zadania (dataZadania, wpis, miesiac, rok) VALUES ('2025-01-31', 'Początek ferii', 'styczen', '2025')";
	if(!$wynik = mysqli_query($link, $query)) {
		echo "Błąd dodania rekordu: ".mysqli.error($link);
	}
?>
Postać obiektowa:
<?php
	$query = "INSERT INTO zadania (dataZadania, wpis, miesiac, rok) VALUES ('2025-01-31', 'Początek ferii', 'styczen', '2025')";
	if(!$mysqli -> query($query)) {
		echo "Błąd dodania rekordu: ". $mysqli -> error;
	}
?>

UPDATE

UPDATE - zapytanie stosowane jest do zmiany danych w wybranych kolunmach rekordów wskazanych klauzulą WHERE

	UPDATE zadania	SET column1 = 'value1', column2 = 'value2', ...	WHERE warunek;

składnia PHP

Przykład:
Zmiana wpisu dla daty 2025-01-31 na "Już zaraz ferie" następuje po wykonaniu kodu.
<?php
	$query = "UPDATE zadania SET wpis='Już zaraz ferie' WHERE dataZadania='2025-01-31'";
	if(!$wynik = mysqli_query($link, $query)) {
		echo "Błąd modyfikacji rekordu: ".mysqli.error($link);
	}
?>
Postać obiektowa:
<?php
	$query = "UPDATE zadania SET wpis='Już zaraz ferie' WHERE dataZadania='2025-01-31'";
	if(!$mysqli -> query($query)) {
		echo "Błąd modyfikacji rekordu: ".$mysqli -> error;
	}
?>

DELETE

DELETE - zapytanie stosowane do kasowania rekordów wskazanych klauzulą WHERE

	DELETE FROM zadania WHERE warunek;

składnia PHP
<>
Przykład:
Skasowanie wpisu dla daty 2025-01-31 następuje po wykonaniu kodu.
<?php
	$query = "DELETE FROM zadania WHERE dataZadania='2025-01-31'";
	if(!$wynik = mysqli_query($link, $query)) {
		echo "Błąd kasowania rekordu: ".mysqli.error($link);
	}
?>
Postać obiektowa:
<?php
	$query = "DELETE FROM zadania WHERE dataZadania='2025-01-31'";
	if(!$mysqli -> query($query)) {
		echo "Błąd kasowania rekordu: ". $mysqli -> error;
	}
?>
<
Projekt i wykonanie: Ryszard Rogacz© 1999−2025