Henting av resultat fra SQL-spørring i PHP
I forrige leksjon lagde vi testkoden. La meg minne om den vesentlige delen som utfører spørringen til databasen:
<?php
$query = 'SELECT * FROM users';
$res = mysqli_query($link, $query) or die(mysqli_error($link));
var_dump($res);
?>
Som du ser, etter at spørringen til databasen
er utført, vil variabelen $res
inneholde resultatet av denne handlingen. Imidlertid
er det ikke lagret i den formen vi trenger
i PHP, men i den formen som databasen
sendte det til oss.
For å få resultatet i den vanlige
formen for oss, må vi bruke funksjonen
mysqli_fetch_assoc, som henter én rad
fra resultatet.
La oss prøve:
<?php
$row = mysqli_fetch_assoc($res);
var_dump($row);
?>
Som et resultat vil var_dump skrive ut en array
med den første arbeidstakeren:
<?php
['id' => 1, 'name' => 'user1', 'age' => 23, 'salary' => 400]
?>
Samtidig vil den første arbeidstakeren forsvinne
fra variabelen $res, og det neste kallet
til mysqli_fetch_assoc
vil allerede hente den neste arbeidstakeren.
Og slik kan vi kalle funksjonen vår
inntil arbeidstakerne er tom. Når
dette skjer, vil det neste funksjonskallet
returnere false.
La oss prøve:
<?php
$row1 = mysqli_fetch_assoc($res);
var_dump($row1); // arbeidstaker nummer 1
$row2 = mysqli_fetch_assoc($res);
var_dump($row2); // arbeidstaker nummer 2
$row3 = mysqli_fetch_assoc($res);
var_dump($row3); // arbeidstaker nummer 3
$row4 = mysqli_fetch_assoc($res);
var_dump($row4); // arbeidstaker nummer 4
$row5 = mysqli_fetch_assoc($res);
var_dump($row5); // arbeidstaker nummer 5
$row6 = mysqli_fetch_assoc($res);
var_dump($row6); // arbeidstaker nummer 6
$row7 = mysqli_fetch_assoc($res);
var_dump($row7); // vil skrive ut NULL - arbeidstakerne er tom
?>