Získanie výsledku pri SQL dotaze v PHP
V predchádzajúcej lekcii sme vytvorili testovací kód. Pripomeniem jeho podstatnú časť, ktorá vykonáva dopyt do databázy:
<?php
$query = 'SELECT * FROM users';
$res = mysqli_query($link, $query) or die(mysqli_error($link));
var_dump($res);
?>
Ako vidíte, po vykonaní dopytu do databázy
bude v premennej $res
ležať výsledok tejto akcie. Avšak
neleží v tej forme, ktorú potrebujeme
v PHP, ale v tej forme, v ktorej nám ho poslala
databáza.
Aby sme získali výsledok v pre nás zvyčajnej
forme, je potrebné použiť funkciu
mysqli_fetch_assoc, ktorá extrahuje z
výsledku jeden riadok.
Skúsme:
<?php
$row = mysqli_fetch_assoc($res);
var_dump($row);
?>
Výsledkom var_dump vypíše pole
s prvým zamestnancom:
<?php
['id' => 1, 'name' => 'user1', 'age' => 23, 'salary' => 400]
?>
Pritom z premennej $res prvý
zamestnanec zmizne a ďalšie volanie mysqli_fetch_assoc
získa už ďalšieho zamestnanca.
A takto môžeme volať našu funkciu až
pokiaľ sa neminia zamestnanci. Akonáhle
sa to stane, ďalšie volanie
funkcie vráti false.
Skúsme:
<?php
$row1 = mysqli_fetch_assoc($res);
var_dump($row1); // zamestnanec číslo 1
$row2 = mysqli_fetch_assoc($res);
var_dump($row2); // zamestnanec číslo 2
$row3 = mysqli_fetch_assoc($res);
var_dump($row3); // zamestnanec číslo 3
$row4 = mysqli_fetch_assoc($res);
var_dump($row4); // zamestnanec číslo 4
$row5 = mysqli_fetch_assoc($res);
var_dump($row5); // zamestnanec číslo 5
$row6 = mysqli_fetch_assoc($res);
var_dump($row6); // zamestnanec číslo 6
$row7 = mysqli_fetch_assoc($res);
var_dump($row7); // vypíše NULL - zamestnanci sa minuli
?>