Zestaw funkcji, który arkusz podaje jako pomoc. Zapis proceduralny: pierwszy parametr to identyfikator połączenia z mysqli_connect.
mysqli_connect●●●
$polaczenie = mysqli_connect("localhost", "root", "", "baza");
Łączy z serwerem: serwer, użytkownik, hasło, nazwa bazy. Zwraca identyfikator połączenia lub FALSE. W arkuszach: localhost, root bez hasła, baza o podanej nazwie.
$polaczenie = mysqli_connect("localhost", "root", "", "samochody");
Uwaga. Hasło puste: "". Nazwa bazy dokładnie jak w phpMyAdmin (z zadania).
mysqli_select_db●●●
mysqli_select_db($polaczenie, "baza");
Wybiera bazę, gdy nie podano jej w mysqli_connect. Zwraca TRUE/FALSE.
mysqli_select_db($polaczenie, "biblioteka");
mysqli_query●●●
$wynik = mysqli_query($polaczenie, "SELECT …");
Wysyła zapytanie do bazy. Dla SELECT zwraca zbiór wyników; dla INSERT/UPDATE/DELETE — TRUE/FALSE. „Wysyła do bazy danych zapytanie 3”.
$zapytanie = "SELECT nazwa, cena FROM towary";
$wynik = mysqli_query($polaczenie, $zapytanie);
Uwaga. Zapytanie przepisz z pliku kwerendy.txt. „Zmodyfikowane zapytanie” — podstaw wartość z formularza w warunku WHERE.
mysqli_fetch_row●●●
while ($wiersz = mysqli_fetch_row($wynik)) { … $wiersz[0] … }
Pobiera kolejny wiersz wyniku jako tablicę indeksowaną numerami kolumn (0, 1, 2…). Po ostatnim wierszu zwraca FALSE — pętla while kończy się sama.
while ($wiersz = mysqli_fetch_row($wynik)) {
echo "<li>" . $wiersz[0] . " - " . $wiersz[1] . "</li>";
}
mysqli_fetch_array / _assoc●●●
$wiersz = mysqli_fetch_array($wynik); $wiersz["nazwa"]
Kolejny wiersz jako tablica z kluczami numerycznymi i nazwami kolumn (fetch_array) lub tylko nazwami (fetch_assoc). Zwraca FALSE, gdy nie ma więcej wierszy.
while ($wiersz = mysqli_fetch_assoc($wynik)) {
echo $wiersz["nazwa"] . " " . $wiersz["cena"];
}
mysqli_num_rows, mysqli_num_fields●●●
mysqli_num_rows($wynik) mysqli_num_fields($wynik)
Liczba wierszy i kolumn w wyniku zapytania. Przydatne do sprawdzenia, czy zapytanie coś zwróciło, oraz do pętli po kolumnach.
if (mysqli_num_rows($wynik) > 0) { … }
mysqli_error●●●
echo mysqli_error($polaczenie);
Tekst komunikatu o błędzie ostatniej operacji — pomoc przy debugowaniu błędnego zapytania.
mysqli_query($polaczenie, $zapytanie) or die(mysqli_error($polaczenie));
Uwaga. W PHP 8.1 i nowszym błąd zapytania domyślnie zgłaszany jest wyjątkiem (mysqli_sql_exception) i komunikat widać od razu na stronie — warunek if (!$wynik) i or die() się wtedy nie wykonają. mysqli_error zwraca tekst błędu, gdy tryb wyjątków jest wyłączony: mysqli_report(MYSQLI_REPORT_OFF). W większości arkuszy sprawdzanie, czy operacja się powiodła, nie jest wymagane.
mysqli_close●●●
mysqli_close($polaczenie);
Zamyka połączenie. Wymagane na końcu skryptu: „Na końcu działania skrypt zamyka połączenie z serwerem”.
mysqli_close($polaczenie);
Styl obiektowy mysqli
$p = new mysqli("localhost", "root", "", "baza"); $p->query(…) $w->fetch_assoc() $p->close();
Ta sama biblioteka w zapisie obiektowym — równoważny, jeśli jest spójny w całym skrypcie. Rozwiązania wzorcowe CKE korzystają z obu zapisów.
$p = new mysqli("localhost", "root", "", "baza");
$wynik = $p->query("SELECT nazwa FROM towary");
while ($w = $wynik->fetch_assoc()) { echo $w["nazwa"]; }
$p->close();
Występuje w rozwiązaniach wzorcowych CKE
mysqli_real_escape_string
mysqli_real_escape_string($polaczenie, $tekst)
Zabezpiecza dane z formularza przed wstrzyknięciem SQL (ucieczka apostrofów). W arkuszach nie jest wymagana, ale to dobry nawyk; docelowo używa się zapytań przygotowanych.
$imie = mysqli_real_escape_string($polaczenie, $_POST["imie"]);