Атрыманне выніку пры 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 - работнікі скончыліся
?>