Атрыманне выніку пры SQL запыце ў PHP

У папярэднім уроку мы зрабілі тэставы код. Нагадаю яго істотную частку, якая выконвае запыт да базы:

php<?php
  $query = 'SELECT * FROM users';
  $res = mysqli_query($link, $query) or die(mysqli_error($link));
  var_dump($res);
?>

Як вы бачыце, пасля таго, як адбудзецца запыт да базы, у зменнай $res будзе ляжаць вынік гэтага дзеяння. Аднак ляжыць ён не ў той форме, якая нам патрэбна ў PHP, а ў той форме, у якой яго прыслала нам база.

Для таго, каб атрымаць вынік у звыклай нам форме, неабходна скарыстацца функцыяй mysqli_fetch_assoc, якая здабывае з выніку адзін радок.

Давайце паспрабуем:

php<?php
  $row = mysqli_fetch_assoc($res);
  var_dump($row);
?>

У выніку var_dump вывяде масіў з першым работнікам:

php<?php
  ['id' => 1, 'name' => 'user1', 'age' => 23, 'salary' => 400]
?>

Пры гэтым з зменнай $res першы работнік знікне, і наступны выклік mysqli_fetch_assoc атрымае ўжо наступнага работніка.

І так можна можна выклікаць нашу функцыю да тых пор, пакуль работнікі не скончацца. Як толькі гэта адбудзецца, то наступны выклік функцыі верне false.

Давайце паспрабуем:

php<?php
  $row1 = mysqli_fetch_assoc($res);
  var_dump($row1); // работнік нумар 1
  
  $row2 = mysqli_fetch_assoc($res);
  var_dump($row2); // работнік нумар 2
  
  $row3 = mysqli_fetch_assoc($res);
  var_dump($row3); // работнік нумар 3
  
  $row4 = mysqli_fetch_assoc($res);
  var_dump($row4); // работнік нумар 4
  
  $row5 = mysqli_fetch_assoc($res);
  var_dump($row5); // работнік нумар 5
  
  $row6 = mysqli_fetch_assoc($res);
  var_dump($row6); // работнік нумар 6
  
  $row7 = mysqli_fetch_assoc($res);
  var_dump($row7); // выведе NULL - работнікі скончыліся
?>