SQL-ით მოთხოვნის შედეგის მიღება PHP-ში

წინა გაკვეთილში ჩვენ გავაკეთეთ სატესტო კოდი. შეგახსენებთ მის მნიშვნელოვან ნაწილს, რომელიც ასრულებს მოთხოვნას ბაზაში:

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

როგორც ხედავთ, მას შემდეგ რაც მოხდება მოთხოვნა ბაზაზე, ცვლადში $res იქნება ამ მოქმედების შედეგი. თუმცა, ის არ არის იმ ფორმაში, რაც ჩვენ გვჭირდება PHP-ში, არამედ იმ ფორმაში, რომელშიც ის ბაზამ გამოგვიგზავნა.

იმისათვის, რომ მივიღოთ შედეგი ჩვენთვის ჩვეულებრივ ფორმაში, აუცილებელია გამოვიყენოთ ფუნქცია 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 - თანამშრომლები ამოიწურა
?>