SQL-kyselyn tuloksen saaminen PHP:ssä
Edellisessä oppitunnissa teimme testikoodin. Muistutan sen olennaisesta osasta, joka suorittaa kyselyn tietokantaan:
<?php
$query = 'SELECT * FROM users';
$res = mysqli_query($link, $query) or die(mysqli_error($link));
var_dump($res);
?>
Kuten näette, sen jälkeen kun kysely tietokantaan on tapahtunut,
muttujassa $res
on kyseisen toiminnon tulos. Kuitenkin
se ei ole muodossa, jota tarvitsemme
PHP:ssä, vaan muodossa, jossa tietokanta on sen lähettänyt.
Saadaksesi tuloksen tutussa
muodossa, on tarpeen käyttää funktiota
mysqli_fetch_assoc, joka noutaa
tuloksesta yhden rivin.
Kokeillaan:
<?php
$row = mysqli_fetch_assoc($res);
var_dump($row);
?>
Tuloksena var_dump tulostaa taulukon
ensimmäisellä työntekijällä:
<?php
['id' => 1, 'name' => 'user1', 'age' => 23, 'salary' => 400]
?>
Samaan aikaan muuttujasta $res ensimmäinen
työntekijä katoaa, ja seuraava mysqli_fetch_assoc-kutsu
saapi jo seuraavan työntekijän.
Ja näin voit kutsua funktiotamme
kunnes työntekijät loppuvat. Kun
tämä tapahtuu, seuraava funktiokutsu
palauttaa false.
Kokeillaan:
<?php
$row1 = mysqli_fetch_assoc($res);
var_dump($row1); // työntekijä numero 1
$row2 = mysqli_fetch_assoc($res);
var_dump($row2); // työntekijä numero 2
$row3 = mysqli_fetch_assoc($res);
var_dump($row3); // työntekijä numero 3
$row4 = mysqli_fetch_assoc($res);
var_dump($row4); // työntekijä numero 4
$row5 = mysqli_fetch_assoc($res);
var_dump($row5); // työntekijä numero 5
$row6 = mysqli_fetch_assoc($res);
var_dump($row6); // työntekijä numero 6
$row7 = mysqli_fetch_assoc($res);
var_dump($row7); // tulostaa NULL - työntekijät loppuivat
?>