Λήψη αποτελέσματος από SQL ερώτημα σε PHP

Στο προηγούμενο μάθημα, δημιουργήσαμε τον δοκιμαστικό κώδικα. Θα θυμίσω το σημαντικό του μέρος, που εκτελεί ένα ερώτημα στη βάση δεδομένων:

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

Όπως βλέπετε, αφού εκτελεστεί το ερώτημα στη βάση δεδομένων, στη μεταβλητή $res θα βρίσκεται το αποτέλεσμα αυτής της ενέργειας. Ωστόσο, δεν βρίσκεται στη μορφή που χρειαζόμαστε σε PHP, αλλά στη μορφή που μας το έστειλε η βάση δεδομένων.

Για να λάβουμε το αποτέλεσμα στη συνηθισμένη μας μορφή, είναι απαραίτητο να χρησιμοποιήσουμε τη συνάρτηση mysqli_fetch_assoc, που εξάγει από το αποτέλεσμα μία γραμμή.

Ας δοκιμάσουμε:

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

Ως αποτέλεσμα, το var_dump θα εμφανίσει έναν πίνακα με τον πρώτο εργαζόμενο:

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

Στην περίπτωση αυτή, από τη μεταβλητή $res ο πρώτος εργαζόμενος θα εξαφανιστεί, και η επόμενη κλήση της mysqli_fetch_assoc θα λάβει τον επόμενο εργαζόμενο.

Και έτσι μπορούμε να καλούμε τη συνάρτησή μας έως ότου εξαντληθούν οι εργαζόμενοι. Μόλις συμβεί αυτό, η επόμενη κλήση της συνάρτησης θα επιστρέψει false.

Ας δοκιμάσουμε:

php<?php
  $row1 = mysqli_fetch_assoc($res);
  var_dump($row1); // εργαζόμενος νούμερο 1
  
  $row2 = mysqli_fetch_assoc($res);
  var_dump($row2); // εργαζόμενος νούμερο 2
  
  $row3 = mysqli_fetch_assoc($res);
  var_dump($row3); // εργαζόμενος νούμερο 3
  
  $row4 = mysqli_fetch_assoc($res);
  var_dump($row4); // εργαζόμενος νούμερο 4
  
  $row5 = mysqli_fetch_assoc($res);
  var_dump($row5); // εργαζόμενος νούμερο 5
  
  $row6 = mysqli_fetch_assoc($res);
  var_dump($row6); // εργαζόμενος νούμερο 6
  
  $row7 = mysqli_fetch_assoc($res);
  var_dump($row7); // θα εμφανίσει NULL - οι εργαζόμενοι τελείωσαν
?>