Eredmény lekérése SQL lekérdezésnél PHP-ben

Az előző leckében készítettünk egy teszt kódot. Emlékeztetőül annak lényeges részét, amely lekérdezést hajt végre az adatbázison:

php<?php
  $query = 'SELECT * FROM users';
  $res = mysqli_query($link, $query) or die(mysqli_error($link));
  var_dump($res);
?>

Amint látod, miután megtörtént a lekérdezés az adatbázisban, a $res változóban az adott művelet eredménye lesz. Azonban nem abban a formában, amelyre szükségünk van PHP-ben, hanem abban a formában, amelyben az adatbázis küldte nekünk.

Ahhoz, hogy az eredményt a megszokott formában kapjuk meg, a mysqli_fetch_assoc funkciót kell használnunk, amely kinyeri az eredményből egy sor adatot.

Próbáljuk ki:

php<?php
  $row = mysqli_fetch_assoc($res);
  var_dump($row);
?>

Az eredményként a var_dump kiírja az első munkavállalót tartalmazó tömböt:

php<?php
  ['id' => 1, 'name' => 'user1', 'age' => 23, 'salary' => 400]
?>

Ezzel egyidejűleg a $res változóból az első munkavállaló eltűnik, és a mysqli_fetch_assoc funkció következő hívása már a következő munkavállalót kapja meg.

És így hívhatjuk a funkciónkat addig, amíg a munkavállalók el nem fogynak. Amint ez megtörténik, a funkció következő hívása false értéket ad vissza.

Próbáljuk ki:

php<?php
  $row1 = mysqli_fetch_assoc($res);
  var_dump($row1); // 1. számú munkavállaló
  
  $row2 = mysqli_fetch_assoc($res);
  var_dump($row2); // 2. számú munkavállaló
  
  $row3 = mysqli_fetch_assoc($res);
  var_dump($row3); // 3. számú munkavállaló
  
  $row4 = mysqli_fetch_assoc($res);
  var_dump($row4); // 4. számú munkavállaló
  
  $row5 = mysqli_fetch_assoc($res);
  var_dump($row5); // 5. számú munkavállaló
  
  $row6 = mysqli_fetch_assoc($res);
  var_dump($row6); // 6. számú munkavállaló
  
  $row7 = mysqli_fetch_assoc($res);
  var_dump($row7); // NULL-t ír ki - elfogytak a munkavállalók
?>