Získanie výsledku pri SQL dotaze v PHP

V predchádzajúcej lekcii sme vytvorili testovací kód. Pripomeniem jeho podstatnú časť, ktorá vykonáva dopyt do databázy:

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

Ako vidíte, po vykonaní dopytu do databázy bude v premennej $res ležať výsledok tejto akcie. Avšak neleží v tej forme, ktorú potrebujeme v PHP, ale v tej forme, v ktorej nám ho poslala databáza.

Aby sme získali výsledok v pre nás zvyčajnej forme, je potrebné použiť funkciu mysqli_fetch_assoc, ktorá extrahuje z výsledku jeden riadok.

Skúsme:

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

Výsledkom var_dump vypíše pole s prvým zamestnancom:

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

Pritom z premennej $res prvý zamestnanec zmizne a ďalšie volanie mysqli_fetch_assoc získa už ďalšieho zamestnanca.

A takto môžeme volať našu funkciu až pokiaľ sa neminia zamestnanci. Akonáhle sa to stane, ďalšie volanie funkcie vráti false.

Skúsme:

php<?php
  $row1 = mysqli_fetch_assoc($res);
  var_dump($row1); // zamestnanec číslo 1
  
  $row2 = mysqli_fetch_assoc($res);
  var_dump($row2); // zamestnanec číslo 2
  
  $row3 = mysqli_fetch_assoc($res);
  var_dump($row3); // zamestnanec číslo 3
  
  $row4 = mysqli_fetch_assoc($res);
  var_dump($row4); // zamestnanec číslo 4
  
  $row5 = mysqli_fetch_assoc($res);
  var_dump($row5); // zamestnanec číslo 5
  
  $row6 = mysqli_fetch_assoc($res);
  var_dump($row6); // zamestnanec číslo 6
  
  $row7 = mysqli_fetch_assoc($res);
  var_dump($row7); // vypíše NULL - zamestnanci sa minuli
?>