Łapka LogoŁapka Infa
🌐
INF.03

Wyciąganie Danych i Query (SELECT)

Zrobiłeś tabele, podłączyłeś bazę, no i... trzeba te zwały danych wyświetlić na ekranie. Robimy loopa z fetch_assoc.

Wyciąganie Danych z Bazy

Mając utworzone przed momentem (w poprzedniej lekcji) połączenie $conn, w końcu musisz rzucić na bazę zapytanie (np. słynny SELECT).

Wykonywanie polecenia SQL

<?php
    // 1. Otwieramy bramę do połączenia 
    $conn = new mysqli('localhost', 'root', '', 'wedkarstwo');

    // 2. Tworzymy komendę
    // Do tej zmiennej ładujesz po prostu polecenie w języku SQL z poprzedniego działu.
    $sql = "SELECT imie, nazwisko FROM wędkarze WHERE punkty > 10";
    
    // 3. Odpalamy (query)!
    // I zbieramy wynik tej egzekucji (czyli odzyskane rekordy) do innej, grubej zmiennej.
    $wynik = $conn->query($sql);
?>

Wyświetlanie wyników (Pętla While + fetch_assoc)

$wynik po powrocie z bazy danych jest gigantycznym pakunkiem pełnym rekordów. Nie możesz na nim napisać zwykłego echo $wynik;, PHP wyrzuci fatalny błąd Cannot convert Object to string. Z tej bazy trzeba wydłubać po jednym kawałku na raz, niczym wędkarz robaki z puszki. Wkracza metoda fetch_assoc() (Przynieś asocjacyjną tablicę, kojarzysz to już!).

<?php
    // Wykonaliśmy już $wynik = $conn->query(...)
    
    // Jeśli ilość znalezionych rzędów jest większa niż 0 (znaleziono kogoś)
    if ($wynik->num_rows > 0) {
        
        // Pętla odpalana dla każdego rzędu tak długo, aż skończą się rekordy!
        // Z każdą inkrementacją (podbiciem), do zmiennej '$wiersz' wpada jeden zrekonstruowany uczeń/wędkarz.
        while($wiersz = $wynik->fetch_assoc()) {
            
            // To już jest nasza Asocjacyjna Tablica! Odwołujemy się po nazwie Kolumny z Bazy MySQL!
            echo "Wędkarz: " . $wiersz["imie"] . " " . $wiersz["nazwisko"] . "<br>";
            
        }
        
    } else {
        echo "Brak wyników do wyświetlenia.";
    }
    
    $conn->close();
?>

I ten wiersz musisz wkuć na pamięć. while($wiersz = $wynik->fetch_assoc()) - Ta linijka pozwala płynnie w 2 sekundy wyciągnąć dowolną listę z bazy na ekran!