Att hämta resultat från en SQL-förfrågan i PHP
I föregående lektion skapade vi testkoden. Låt mig påminna om dess väsentliga del, som utför en förfrågan till databasen:
<?php
$query = 'SELECT * FROM users';
$res = mysqli_query($link, $query) or die(mysqli_error($link));
var_dump($res);
?>
Som du kan se, efter att förfrågan till databasen
har skett, kommer variabeln $res
innehålla resultatet av denna åtgärd. Men
det ligger inte i den form som vi behöver
i PHP, utan i den form som databasen skickade
det till oss.
För att få resultatet i den vanliga
formen för oss, är det nödvändigt att använda funktionen
mysqli_fetch_assoc, som hämtar en rad
från resultatet.
Låt oss prova:
<?php
$row = mysqli_fetch_assoc($res);
var_dump($row);
?>
Som ett resultat kommer var_dump att skriva ut en array
med den första anställda:
<?php
['id' => 1, 'name' => 'user1', 'age' => 23, 'salary' => 400]
?>
Samtidigt kommer den första
anställda att försvinna från variabeln $res,
och nästa anrop till mysqli_fetch_assoc
kommer att hämta nästa anställd.
Och så kan man anropa vår funktion
tills de anställda tar slut. När
detta händer, kommer nästa anrop
till funktionen att returnera false.
Låt oss prova:
<?php
$row1 = mysqli_fetch_assoc($res);
var_dump($row1); // anställd nummer 1
$row2 = mysqli_fetch_assoc($res);
var_dump($row2); // anställd nummer 2
$row3 = mysqli_fetch_assoc($res);
var_dump($row3); // anställd nummer 3
$row4 = mysqli_fetch_assoc($res);
var_dump($row4); // anställd nummer 4
$row5 = mysqli_fetch_assoc($res);
var_dump($row5); // anställd nummer 5
$row6 = mysqli_fetch_assoc($res);
var_dump($row6); // anställd nummer 6
$row7 = mysqli_fetch_assoc($res);
var_dump($row7); // kommer att skriva ut NULL - inga fler anställda
?>