SQL päringu tulemuse saamine PHP-s
Eelmises õppetükis tegime testkoodi. Tuletan meelde selle olulist osa, mis teeb päringu andmebaasi:
<?php
$query = 'SELECT * FROM users';
$res = mysqli_query($link, $query) or die(mysqli_error($link));
var_dump($res);
?>
Nagu näete, pärast seda kui päring andmebaasi
tehakse, on muutujas $res
selle tegevuse tulemus. Siiski
ei ole see vormis, mida me vajame
PHP-s, vaid selles vormis, milles andmebaas
selle meile saatis.
Selleks, et saada tulemus meile harjumuspärases
vormis, on vaja kasutada funktsiooni
mysqli_fetch_assoc, mis võtab
tulemusest ühe rea.
Proovime:
<?php
$row = mysqli_fetch_assoc($res);
var_dump($row);
?>
Tulemusena var_dump väljastab massiivi
esimese töötajaga:
<?php
['id' => 1, 'name' => 'user1', 'age' => 23, 'salary' => 400]
?>
Samal ajal muutujast $res esimene
töötaja kaob ja järgmine mysqli_fetch_assoc
käsk saab juba järgmise töötaja.
Ja nii saab meie funktsiooni kutsuda kuni
töötajad otsa saavad. Kui
see juhtub, siis järgmine funktsiooni
käsk tagastab false.
Proovime:
<?php
$row1 = mysqli_fetch_assoc($res);
var_dump($row1); // töötaja number 1
$row2 = mysqli_fetch_assoc($res);
var_dump($row2); // töötaja number 2
$row3 = mysqli_fetch_assoc($res);
var_dump($row3); // töötaja number 3
$row4 = mysqli_fetch_assoc($res);
var_dump($row4); // töötaja number 4
$row5 = mysqli_fetch_assoc($res);
var_dump($row5); // töötaja number 5
$row6 = mysqli_fetch_assoc($res);
var_dump($row6); // töötaja number 6
$row7 = mysqli_fetch_assoc($res);
var_dump($row7); // väljastab NULL - töötajad said otsa
?>