PHP-də SQL sorğusunun nəticəsini əldə etmək

Əvvəlki dərsdə biz test kodunu hazırlamışdıq. Onun əsas hissəsini, bazaya sorğu yerinə yetirən hissəni xatırladım:

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

Gördüyünüz kimi, bazaya sorğu yerinə yetirildikdən sonra, $res dəyişənində bu əməliyyatın nəticəsi yerləşəcək. Lakin bu nəticə bizim PHP-də ehtiyac duyduğumuz formada deyil, bazanın bizə göndərdiyi formadadır.

Nəticəni bizim üçün adi formada əldə etmək üçün, nəticədən bir sətri çıxaran mysqli_fetch_assoc funksiyasından istifadə etmək lazımdır.

Gəlin cəhd edək:

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

Nəticədə var_dump ilk işçi ilə massivi çıxardacaq:

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

Bu zaman $res dəyişənindən ilk işçi yox olacaq və mysqli_fetch_assoc-ın növbəti çağırışı artıq növbəti işçini əldə edəcək.

Və biz funksiyamızı işçilər tükənənə qədər çağıra bilərik. Bu baş verən kimi, funksiyanın növbəti çağırışı false qaytaracaq.

Gəlin cəhd edək:

php<?php
  $row1 = mysqli_fetch_assoc($res);
  var_dump($row1); // işçi nomre 1
  
  $row2 = mysqli_fetch_assoc($res);
  var_dump($row2); // işçi nomre 2
  
  $row3 = mysqli_fetch_assoc($res);
  var_dump($row3); // işçi nomre 3
  
  $row4 = mysqli_fetch_assoc($res);
  var_dump($row4); // işçi nomre 4
  
  $row5 = mysqli_fetch_assoc($res);
  var_dump($row5); // işçi nomre 5
  
  $row6 = mysqli_fetch_assoc($res);
  var_dump($row6); // işçi nomre 6
  
  $row7 = mysqli_fetch_assoc($res);
  var_dump($row7); // NULL çıxardacaq - işçilər bitdi
?>