SQL užklausos rezultato gavimas PHP
Ankstesnėje pamokoje mes sukūrėme bandomąjį kodą. Primenu esminę jo dalį, atliekančią užklausą į duomenų bazę:
<?php
$query = 'SELECT * FROM users';
$res = mysqli_query($link, $query) or die(mysqli_error($link));
var_dump($res);
?>
Kaip matote, po to, kai įvyks
užklausa į duomenų bazę, kintamajame $res
bus šio veiksmo rezultatas. Tačiau
jis yra ne toje formoje, kuri mums reikalinga
PHP, o toje formoje, kurioje jį atsiuntė
duomenų bazė.
Norint gauti rezultatą įprastoje
mums formoje, būtina pasinaudoti funkcija
mysqli_fetch_assoc, ištraukiančia iš
rezultato vieną eilutę.
Pabandykime:
<?php
$row = mysqli_fetch_assoc($res);
var_dump($row);
?>
Rezultate var_dump atspausdins masyvą
su pirmuoju darbuotoju:
<?php
['id' => 1, 'name' => 'user1', 'age' => 23, 'salary' => 400]
?>
Tuomet iš kintamojo $res pirmasis
darbuotojas išnyks, ir sekantis mysqli_fetch_assoc
kvietimas gaus jau sekantį darbuotoją.
Ir taip galima kviesti mūsų funkciją iki
kol darbuotojai nesibaigs. Kai
tai atsitiks, sekantis funkcijos
kvietimas grąžins false.
Pabandykime:
<?php
$row1 = mysqli_fetch_assoc($res);
var_dump($row1); // darbuotojas numeris 1
$row2 = mysqli_fetch_assoc($res);
var_dump($row2); // darbuotojas numeris 2
$row3 = mysqli_fetch_assoc($res);
var_dump($row3); // darbuotojas numeris 3
$row4 = mysqli_fetch_assoc($res);
var_dump($row4); // darbuotojas numeris 4
$row5 = mysqli_fetch_assoc($res);
var_dump($row5); // darbuotojas numeris 5
$row6 = mysqli_fetch_assoc($res);
var_dump($row6); // darbuotojas numeris 6
$row7 = mysqli_fetch_assoc($res);
var_dump($row7); // atspausdins NULL - darbuotojai baigėsi
?>