Pridobivanje rezultata pri SQL poizvedbi v PHP

V prejšnji lekciji smo naredili testno kodo. Spomnim se njegovega bistvenega dela, ki izvaja poizvedbo po bazi:

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

Kot vidite, potem ko se izvede poizvedba po bazi, bo v spremenljivki $res ležal rezultat tega dejanja. Vendar ne leži v obliki, ki jo potrebujemo v PHP, ampak v obliki, v kateri nam jo je poslala baza.

Da bi dobili rezultat v nam znani obliki, je treba uporabiti funkcijo mysqli_fetch_assoc, ki izvleče iz rezultata eno vrstico.

Poskusimo:

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

Kot rezultat bo var_dump izpisal polje s prvim delavcem:

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

Pri tem pa bo iz spremenljivke $res prvi delavec izginil in naslednji klic mysqli_fetch_assoc bo dobil že naslednjega delavca.

In tako lahko kličemo našo funkcijo dokler se delavci ne bodo končali. Ko se to zgodi, bo naslednji klic funkcije vrnil false.

Poskusimo:

php<?php
  $row1 = mysqli_fetch_assoc($res);
  var_dump($row1); // delavec številka 1
  
  $row2 = mysqli_fetch_assoc($res);
  var_dump($row2); // delavec številka 2
  
  $row3 = mysqli_fetch_assoc($res);
  var_dump($row3); // delavec številka 3
  
  $row4 = mysqli_fetch_assoc($res);
  var_dump($row4); // delavec številka 4
  
  $row5 = mysqli_fetch_assoc($res);
  var_dump($row5); // delavec številka 5
  
  $row6 = mysqli_fetch_assoc($res);
  var_dump($row6); // delavec številka 6
  
  $row7 = mysqli_fetch_assoc($res);
  var_dump($row7); // izpisal bo NULL - delavci so se končali
?>