Получение результата при 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 - работники кончились
?>