SQL сўрови натижасини PHP да олиш

Олдинги дарсда биз тестовый код ясадик. Унинг асосий қисмини эслатма, базага сўровни бажаради:

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

Кўриб турганингиздек, базага сўров бажарилганидан кейин $res ўзгарувчисида ушбу ҳаракат натижаси жойлашади. Бирок у бизга керак бўлган шаклда эмас, балки база бизга юборган шаклда.

Натижани биз учун оддий шаклда олиш учун функцидан фойдаланиш керак mysqli_fetch_assoc, натижадан бир қаторни олувчи.

Келиб синайлик:

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

Натижада var_dump биринчи ишчи билан массивни чиқаради:

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

Бунинг билан $res ўзгарувчисидан биринчи ишчи йўқолади, ва кейинги mysqli_fetch_assoc чақируви аллақачон кейинги ишчини олади.

Ва шунингдек бизнинг функциамизни чақириш мумкин ишчилар тугагунча. Қачонки бу бўлса, кейинги функциа чақируви false қайтаради.

Келиб синайлик:

php<?php
  $row1 = mysqli_fetch_assoc($res);
  var_dump($row1); // ишчи номер 1
  
  $row2 = mysqli_fetch_assoc($res);
  var_dump($row2); // ишчи номер 2
  
  $row3 = mysqli_fetch_assoc($res);
  var_dump($row3); // ишчи номер 3
  
  $row4 = mysqli_fetch_assoc($res);
  var_dump($row4); // ишчи номер 4
  
  $row5 = mysqli_fetch_assoc($res);
  var_dump($row5); // ишчи номер 5
  
  $row6 = mysqli_fetch_assoc($res);
  var_dump($row6); // ишчи номер 6
  
  $row7 = mysqli_fetch_assoc($res);
  var_dump($row7); // NULL ни чиқаради - ишчилар тугади
?>