Dans PHP, si vous utilisez l'extension (MySQL Improved Extension) pour vous connecter à la base de données et exécuter la requête, lorsque vous exécutez une fonction de requête comme MySQLI_Query () , si la requête renvoie un ensemble de résultats (comme une requête sélectionnée ), vous obtiendrez un objet MySQLI_RESULT .
Cet objet mysqli_result est une interface pour manipuler les résultats de la requête, à travers lesquels vous pouvez lire les données renvoyées par la requête ligne par ligne et champ par champ.
MySQLI_RESULT est un objet de définition de résultats qui existe dans les styles orientés objet et procédural . Il contient toutes les lignes et données de colonne renvoyées par la requête de la base de données, mais elle ne charge pas toutes ces données en mémoire à la fois, mais doit être récupérée à la demande par le biais de diverses méthodes.
Les moyens courants d'obtenir des données sont:
fetch_assoc () → Obtenez une rangée de tableaux associatifs
fetch_row () → obtenir un tableau d'index de lignes
fetch_object () → obtenir une ligne d'objets
fetch_array () → Obtenez une ligne, soit un tableau associatif, un tableau d'index ou les deux (configurable)
Cet article se concentre sur fetch_array () .
fetch_array () est une méthode de mysqli_result , utilisée pour obtenir une ligne de données dans l'ensemble de résultats actuel, et le formulaire de retour est un tableau.
Il existe deux styles d'appel:
Style orienté objet:
$result = $mysqli->query("SELECT id, name FROM users");
$row = $result->fetch_array();
Style de processus:
$result = mysqli_query($conn, "SELECT id, name FROM users");
$row = mysqli_fetch_array($result);
Quoi qu'il en soit, il faut une ligne à chaque fois qu'il appelle jusqu'à ce qu'il n'y ait plus de lignes (renvoie faux à ce stade).
Fetch_Array () peut recevoir un paramètre facultatif pour contrôler le type du tableau de retour.
Signature complète:
array mysqli_fetch_array(mysqli_result $result, int $resulttype = MYSQLI_BOTH)
La valeur du paramètre $ resultType est:
Mysqli_assoc → retourner uniquement le tableau associatif (nom de champ comme clé)
Mysqli_num → retourner uniquement le tableau d'index de numéro (l'index de champ est la clé)
Mysqli_both (par défaut) → Renvoie le tableau mixte d'association + index numérique
Par exemple:
$conn = mysqli_connect("localhost", "username", "password", "database");
$result = mysqli_query($conn, "SELECT id, name FROM users");
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
echo "ID: " . $row['id'] . " Name: " . $row['name'] . "<br>";
}
Ici, nous utilisons MySQLI_ASSOC , il n'y a donc que la clé de nom de champ dans $ ROW , et pas d'index numérique.
Exemple complet: