Marrja e rezultatit nga kërkesa SQL në PHP

Në mësimin e mëparshëm ne krijuam kodin testues. Kujtoj pjesën thelbësore të tij, e cila ekzekuton kërkesën në bazën e të dhënave:

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

Siç e shihni, pasi të kryhet kërkesa në bazën e të dhënave, në variablin $res do të jetë rezultati i këtij veprimi. Megjithatë, rezultati nuk është në formën që na nevojitet në PHP, por në formën në të cilën na e dërgoi baza e të dhënave.

Për të marrë rezultatin në formën e njohur për ne, është e nevojshme të përdoret funksioni mysqli_fetch_assoc, i cili nxjerr nga rezultati një rresht.

Le të provojmë:

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

Si rezultat var_dump do të shfaqë një array me punonjësin e parë:

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

Në këtë rast nga variabli $res i pari punonjës do të zhduket, dhe thirrja e radhës e mysqli_fetch_assoc do të marrë punonjësin tjetër.

Dhe kështu mund të thërrasim funksionin tonë derisa të mbarojnë punonjësit. Sapo të ndodhë kjo, thirrja e radhës e funksionit do të kthejë false.

Le të provojmë:

php<?php
  $row1 = mysqli_fetch_assoc($res);
  var_dump($row1); // punonjësi numër 1
  
  $row2 = mysqli_fetch_assoc($res);
  var_dump($row2); // punonjësi numër 2
  
  $row3 = mysqli_fetch_assoc($res);
  var_dump($row3); // punonjësi numër 3
  
  $row4 = mysqli_fetch_assoc($res);
  var_dump($row4); // punonjësi numër 4
  
  $row5 = mysqli_fetch_assoc($res);
  var_dump($row5); // punonjësi numër 5
  
  $row6 = mysqli_fetch_assoc($res);
  var_dump($row6); // punonjësi numër 6
  
  $row7 = mysqli_fetch_assoc($res);
  var_dump($row7); // do të shfaqë NULL - punonjësit kanë mbaruar
?>