Pobieranie wyniku zapytania SQL w PHP

W poprzedniej lekcji stworzyliśmy kod testowy. Przypomnę jego istotną część, wykonującą zapytanie do bazy:

php<?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<?php
  $row = mysqli_fetch_assoc($res);
  var_dump($row);
?>

W wyniku var_dump wyświetli tablicę z pierwszym pracownikiem:

php<?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<?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
?>