SQL-kyselyn tuloksen saaminen PHP:ssä

Edellisessä oppitunnissa teimme testikoodin. Muistutan sen olennaisesta osasta, joka suorittaa kyselyn tietokantaan:

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

Kuten näette, sen jälkeen kun kysely tietokantaan on tapahtunut, muttujassa $res on kyseisen toiminnon tulos. Kuitenkin se ei ole muodossa, jota tarvitsemme PHP:ssä, vaan muodossa, jossa tietokanta on sen lähettänyt.

Saadaksesi tuloksen tutussa muodossa, on tarpeen käyttää funktiota mysqli_fetch_assoc, joka noutaa tuloksesta yhden rivin.

Kokeillaan:

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

Tuloksena var_dump tulostaa taulukon ensimmäisellä työntekijällä:

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

Samaan aikaan muuttujasta $res ensimmäinen työntekijä katoaa, ja seuraava mysqli_fetch_assoc-kutsu saapi jo seuraavan työntekijän.

Ja näin voit kutsua funktiotamme kunnes työntekijät loppuvat. Kun tämä tapahtuu, seuraava funktiokutsu palauttaa false.

Kokeillaan:

php<?php
  $row1 = mysqli_fetch_assoc($res);
  var_dump($row1); // työntekijä numero 1
  
  $row2 = mysqli_fetch_assoc($res);
  var_dump($row2); // työntekijä numero 2
  
  $row3 = mysqli_fetch_assoc($res);
  var_dump($row3); // työntekijä numero 3
  
  $row4 = mysqli_fetch_assoc($res);
  var_dump($row4); // työntekijä numero 4
  
  $row5 = mysqli_fetch_assoc($res);
  var_dump($row5); // työntekijä numero 5
  
  $row6 = mysqli_fetch_assoc($res);
  var_dump($row6); // työntekijä numero 6
  
  $row7 = mysqli_fetch_assoc($res);
  var_dump($row7); // tulostaa NULL - työntekijät loppuivat
?>