Hentning af resultat ved SQL-forespørgsel i PHP
I den forrige lektion lavede vi testkoden. Jeg minder om dens væsentlige del, der udfører forespørgsel til databasen:
<?php
$query = 'SELECT * FROM users';
$res = mysqli_query($link, $query) or die(mysqli_error($link));
var_dump($res);
?>
Som du kan se, efter forespørgslen til databasen
er udført, vil variablen $res
indeholde resultatet af denne handling. Dog
er det ikke i den form, vi har brug for
i PHP, men i den form, som databasen
sendte det til os.
For at få resultatet i den sædvanlige
form for os, er det nødvendigt at bruge funktionen
mysqli_fetch_assoc, som henter én række
fra resultatet.
Lad os prøve:
<?php
$row = mysqli_fetch_assoc($res);
var_dump($row);
?>
Som resultat vil var_dump udskrive et array
med den første medarbejder:
<?php
['id' => 1, 'name' => 'user1', 'age' => 23, 'salary' => 400]
?>
Samtidig vil den første
medarbejder forsvinde fra variablen $res,
og det næste kald til mysqli_fetch_assoc
vil allerede hente den næste medarbejder.
Og sådan kan man kalde vores funktion indtil
medarbejderne er slut. Så snart
dette sker, vil det næste kald
af funktionen returnere false.
Lad os prøve:
<?php
$row1 = mysqli_fetch_assoc($res);
var_dump($row1); // medarbejder nummer 1
$row2 = mysqli_fetch_assoc($res);
var_dump($row2); // medarbejder nummer 2
$row3 = mysqli_fetch_assoc($res);
var_dump($row3); // medarbejder nummer 3
$row4 = mysqli_fetch_assoc($res);
var_dump($row4); // medarbejder nummer 4
$row5 = mysqli_fetch_assoc($res);
var_dump($row5); // medarbejder nummer 5
$row6 = mysqli_fetch_assoc($res);
var_dump($row6); // medarbejder nummer 6
$row7 = mysqli_fetch_assoc($res);
var_dump($row7); // vil udskrive NULL - medarbejdere er slut
?>