SQL užklausos rezultato gavimas PHP

Ankstesnėje pamokoje mes sukūrėme bandomąjį kodą. Primenu esminę jo dalį, atliekančią užklausą į duomenų bazę:

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

Kaip matote, po to, kai įvyks užklausa į duomenų bazę, kintamajame $res bus šio veiksmo rezultatas. Tačiau jis yra ne toje formoje, kuri mums reikalinga PHP, o toje formoje, kurioje jį atsiuntė duomenų bazė.

Norint gauti rezultatą įprastoje mums formoje, būtina pasinaudoti funkcija mysqli_fetch_assoc, ištraukiančia iš rezultato vieną eilutę.

Pabandykime:

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

Rezultate var_dump atspausdins masyvą su pirmuoju darbuotoju:

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

Tuomet iš kintamojo $res pirmasis darbuotojas išnyks, ir sekantis mysqli_fetch_assoc kvietimas gaus jau sekantį darbuotoją.

Ir taip galima kviesti mūsų funkciją iki kol darbuotojai nesibaigs. Kai tai atsitiks, sekantis funkcijos kvietimas grąžins false.

Pabandykime:

php<?php
  $row1 = mysqli_fetch_assoc($res);
  var_dump($row1); // darbuotojas numeris 1
  
  $row2 = mysqli_fetch_assoc($res);
  var_dump($row2); // darbuotojas numeris 2
  
  $row3 = mysqli_fetch_assoc($res);
  var_dump($row3); // darbuotojas numeris 3
  
  $row4 = mysqli_fetch_assoc($res);
  var_dump($row4); // darbuotojas numeris 4
  
  $row5 = mysqli_fetch_assoc($res);
  var_dump($row5); // darbuotojas numeris 5
  
  $row6 = mysqli_fetch_assoc($res);
  var_dump($row6); // darbuotojas numeris 6
  
  $row7 = mysqli_fetch_assoc($res);
  var_dump($row7); // atspausdins NULL - darbuotojai baigėsi
?>