Получаване на резултат от 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 - работниците свършиха
?>