PHP'de SQL Sorgusu Sonucu Alma

Önceki derste test kodunu yapmıştık. Veritabanına sorgu yapan önemli kısmını hatırlatayım:

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

Gördüğünüz gibi, veritabanına sorgu yapıldıktan sonra, $res değişkeninde bu eylemin sonucu yer alacaktır. Ancak sonuç, PHP'de ihtiyacımız olan formatta değil, veritabanının bize gönderdiği formatta bulunur.

Sonucu alışık olduğumuz forma getirmek için, sonuçtan bir satır çıkaran mysqli_fetch_assoc fonksiyonunu kullanmak gerekir.

Deneyelim:

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

Sonuç olarak var_dump ilk çalışanla ilgili diziyi gösterecek:

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

Bu durumda $res değişkeninden ilk çalışan kaybolacak ve sonraki mysqli_fetch_assoc çağrısı zaten bir sonraki çalışanı alacaktır.

Ve çalışanlar bitene kadar fonksiyonumuzu çağırmaya devam edebiliriz. Bu olduğunda, bir sonraki fonksiyon çağrısı false döndürecektir.

Deneyelim:

php<?php
  $row1 = mysqli_fetch_assoc($res);
  var_dump($row1); // çalışan numara 1
  
  $row2 = mysqli_fetch_assoc($res);
  var_dump($row2); // çalışan numara 2
  
  $row3 = mysqli_fetch_assoc($res);
  var_dump($row3); // çalışan numara 3
  
  $row4 = mysqli_fetch_assoc($res);
  var_dump($row4); // çalışan numara 4
  
  $row5 = mysqli_fetch_assoc($res);
  var_dump($row5); // çalışan numara 5
  
  $row6 = mysqli_fetch_assoc($res);
  var_dump($row6); // çalışan numara 6
  
  $row7 = mysqli_fetch_assoc($res);
  var_dump($row7); // NULL gösterecek - çalışanlar bitti
?>