Po uruchomieniu modułu XAMPP i serwera Apache startujemy moduł MySQL
Sprawdzamy, czy wszystko działa:
Uruchamiamy moduł zarządzania bazą phpMyAdmin
Domyślnie uruchamia się moduł zarządzania bazą phpMyAdmin
Jeśli nie, podajemy dane logowania
Wybieramy zakładkę [Bazy danych]
Po utworzeniu pojawia się ona w zewstawie baz:
Możemy teraz dodawać nowe tabele lub importować je z pliku .sql
Przyły łączeniu z bazą danych konieczne są następujące informacje:
$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();
}
?>
$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");
?>
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;
Aby zadać pytanie do bazy musimy użyć funkcji:
mysqli_query($link, $query);
Funkcja wymaga dwóch argumentów:
$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);
$row = mysqli_fetch_row($wynik);
$row = mysqli_fetch_array($wynik);
$row = mysqli_fetch_assoc($wynik);
Jednym z lepszych typów pobierania danych jest tablica asocjacyjna. W takim przypadku klucze tablicy odpowiadają nazwom pól tablicy SQL.
<?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>";
}
}
?>
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();
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();
$row = $result -> fetch_array($wynik);
$row = $result -> fetch_assoc($wynik);
Jednym z lepszych typów pobierania danych jest tablica asocjacyjna. W takim przypadku klucze tablicy odpowiadają nazwom pól tablicy SQL.
<?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 - 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', ...);
<?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 - zapytanie stosowane jest do zmiany danych w wybranych kolunmach rekordów wskazanych klauzulą WHERE
UPDATE zadania SET column1 = 'value1', column2 = 'value2', ... WHERE warunek;
<?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 - zapytanie stosowane do kasowania rekordów wskazanych klauzulą WHERE
DELETE FROM zadania WHERE warunek;
<?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;
}
?>
<