Pobieranie wyniku zapytania SQL w PHP
W poprzedniej lekcji stworzyliśmy kod testowy. Przypomnę jego istotną część, wykonującą zapytanie do bazy:
<?php
$query = 'SELECT * FROM users';
$res = mysqli_query($link, $query) or die(mysqli_error($link));
var_dump($res);
?>
Jak widzicie, po wykonaniu
zapytania do bazy, w zmiennej $res
będzie znajdował się wynik tego działania. Jednak
nie jest on w formie, której potrzebujemy
w PHP, ale w formie, w której przesłała go
do nas baza.
Aby uzyskać wynik w znanej nam formie,
konieczne jest skorzystanie z funkcji
mysqli_fetch_assoc, która pobiera z
wyniku jeden wiersz.
Spróbujmy:
<?php
$row = mysqli_fetch_assoc($res);
var_dump($row);
?>
W wyniku var_dump wyświetli tablicę
z pierwszym pracownikiem:
<?php
['id' => 1, 'name' => 'user1', 'age' => 23, 'salary' => 400]
?>
Przy czym ze zmiennej $res pierwszy
pracownik zniknie, a kolejne wywołanie mysqli_fetch_assoc
pobierze już kolejnego pracownika.
I tak można wywoływać naszą funkcję
dopóki pracownicy się nie skończą. Gdy
się to stanie, kolejne wywołanie
funkcji zwróci false.
Spróbujmy:
<?php
$row1 = mysqli_fetch_assoc($res);
var_dump($row1); // pracownik numer 1
$row2 = mysqli_fetch_assoc($res);
var_dump($row2); // pracownik numer 2
$row3 = mysqli_fetch_assoc($res);
var_dump($row3); // pracownik numer 3
$row4 = mysqli_fetch_assoc($res);
var_dump($row4); // pracownik numer 4
$row5 = mysqli_fetch_assoc($res);
var_dump($row5); // pracownik numer 5
$row6 = mysqli_fetch_assoc($res);
var_dump($row6); // pracownik numer 6
$row7 = mysqli_fetch_assoc($res);
var_dump($row7); // wyświetli NULL - pracownicy się skończyli
?>