Λήψη αποτελέσματος από SQL ερώτημα σε 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
$row = mysqli_fetch_assoc($res);
var_dump($row);
?>
Ως αποτέλεσμα, το var_dump θα εμφανίσει έναν πίνακα
με τον πρώτο εργαζόμενο:
<?php
['id' => 1, 'name' => 'user1', 'age' => 23, 'salary' => 400]
?>
Στην περίπτωση αυτή, από τη μεταβλητή $res ο πρώτος
εργαζόμενος θα εξαφανιστεί, και η επόμενη κλήση της mysqli_fetch_assoc
θα λάβει τον επόμενο εργαζόμενο.
Και έτσι μπορούμε να καλούμε τη συνάρτησή μας
έως ότου εξαντληθούν οι εργαζόμενοι. Μόλις
συμβεί αυτό, η επόμενη κλήση της
συνάρτησης θα επιστρέψει false.
Ας δοκιμάσουμε:
<?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 - οι εργαζόμενοι τελείωσαν
?>