Získání výsledku SQL dotazu v PHP
V předchozí lekci jsme vytvořili testovací kód. Připomenu jeho podstatnou část, která provádí dotaz na databázi:
<?php
$query = 'SELECT * FROM users';
$res = mysqli_query($link, $query) or die(mysqli_error($link));
var_dump($res);
?>
Jak vidíte, poté, co proběhne
dotaz na databázi, bude v proměnné $res
ležet výsledek této akce. Avšak
neleží ve formě, kterou potřebujeme
v PHP, ale ve formě, ve které nám jej poslala
databáze.
Abyste získali výsledek v obvyklé
formě, je nutné použít funkci
mysqli_fetch_assoc, která z
výsledku extrahuje jeden řádek.
Zkusme to:
<?php
$row = mysqli_fetch_assoc($res);
var_dump($row);
?>
Výsledkem var_dump bude výpis pole
s prvním zaměstnancem:
<?php
['id' => 1, 'name' => 'user1', 'age' => 23, 'salary' => 400]
?>
Přičemž z proměnné $res první
zaměstnanec zmizí a další volání mysqli_fetch_assoc
získá již dalšího zaměstnance.
A tak lze naši funkci volat dokud
nezaměstnanci nedojdou. Jakmile
k tomu dojde, další volání
funkce vrátí false.
Zkusme to:
<?php
$row1 = mysqli_fetch_assoc($res);
var_dump($row1); // zaměstnanec číslo 1
$row2 = mysqli_fetch_assoc($res);
var_dump($row2); // zaměstnanec číslo 2
$row3 = mysqli_fetch_assoc($res);
var_dump($row3); // zaměstnanec číslo 3
$row4 = mysqli_fetch_assoc($res);
var_dump($row4); // zaměstnanec číslo 4
$row5 = mysqli_fetch_assoc($res);
var_dump($row5); // zaměstnanec číslo 5
$row6 = mysqli_fetch_assoc($res);
var_dump($row6); // zaměstnanec číslo 6
$row7 = mysqli_fetch_assoc($res);
var_dump($row7); // vypíše NULL - zaměstnanci došli
?>