SQL-ით მოთხოვნის შედეგის მიღება 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
$row = mysqli_fetch_assoc($res);
var_dump($row);
?>
შედეგად var_dump გამოიტანს მასივს
პირველი თანამშრომლით:
<?php
['id' => 1, 'name' => 'user1', 'age' => 23, 'salary' => 400]
?>
ამასთან, ცვლადიდან $res პირველი
თანამშრომელი გაქრება, და შემდეგი გამოძახება mysqli_fetch_assoc
მიიღებს უკვე შემდეგ თანამშრომელს.
და ასე შეიძლება ჩვენი ფუნქციის გამოძახება
იმ დრომდე, სანამ თანამშრომლები არ ამოიწურება. როგორც
კი ეს მოხდება, შემდეგი ფუნქციის გამოძახება
დააბრუნებს false-ს.
შევეცადოთ:
<?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 - თანამშრომლები ამოიწურა
?>