Henting av resultat fra SQL-spørring i PHP

I forrige leksjon lagde vi testkoden. La meg minne om den vesentlige delen som utfører spørringen til databasen:

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

Som du ser, etter at spørringen til databasen er utført, vil variabelen $res inneholde resultatet av denne handlingen. Imidlertid er det ikke lagret i den formen vi trenger i PHP, men i den formen som databasen sendte det til oss.

For å få resultatet i den vanlige formen for oss, må vi bruke funksjonen mysqli_fetch_assoc, som henter én rad fra resultatet.

La oss prøve:

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

Som et resultat vil var_dump skrive ut en array med den første arbeidstakeren:

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

Samtidig vil den første arbeidstakeren forsvinne fra variabelen $res, og det neste kallet til mysqli_fetch_assoc vil allerede hente den neste arbeidstakeren.

Og slik kan vi kalle funksjonen vår inntil arbeidstakerne er tom. Når dette skjer, vil det neste funksjonskallet returnere false.

La oss prøve:

php<?php
  $row1 = mysqli_fetch_assoc($res);
  var_dump($row1); // arbeidstaker nummer 1
  
  $row2 = mysqli_fetch_assoc($res);
  var_dump($row2); // arbeidstaker nummer 2
  
  $row3 = mysqli_fetch_assoc($res);
  var_dump($row3); // arbeidstaker nummer 3
  
  $row4 = mysqli_fetch_assoc($res);
  var_dump($row4); // arbeidstaker nummer 4
  
  $row5 = mysqli_fetch_assoc($res);
  var_dump($row5); // arbeidstaker nummer 5
  
  $row6 = mysqli_fetch_assoc($res);
  var_dump($row6); // arbeidstaker nummer 6
  
  $row7 = mysqli_fetch_assoc($res);
  var_dump($row7); // vil skrive ut NULL - arbeidstakerne er tom
?>