fetch_array
Découvrez la fonction mysqli_fetch_array() en PHP pour récupérer des lignes depuis un résultat MySQLi sous forme de tableau associatif ou numérique.
Dans cet article, nous allons nous concentrer sur la fonction mysqli_fetch_array() en PHP, qui permet de récupérer une ligne d'un résultat MySQLi sous forme de tableau associatif, numérique ou combiné. Nous présenterons un aperçu de la fonction, ses paramètres et des exemples pratiques.
Introduction à la fonction mysqli_fetch_array()
La fonction mysqli_fetch_array() est une fonction PHP intégrée qui extrait une ligne d'un résultat MySQLi. Elle retourne la ligne sous forme de tableau associatif, de tableau numérique, ou des deux, selon le paramètre result_type. Cela est particulièrement utile lorsque vous devez parcourir les résultats d'une requête et accéder aux colonnes par leur nom ou leur index.
Elle fonctionne sur le résultat retourné par mysqli_query(). Chaque appel avance un pointeur interne vers la ligne suivante et retourne cette ligne ; lorsqu'il n'y a plus de lignes, elle retourne null (la valeur qui met fin à la boucle). C'est la plus flexible des fonctions de récupération MySQLi : mysqli_fetch_assoc() retourne toujours des clés nommées, mysqli_fetch_row() retourne toujours des clés d'index, et mysqli_fetch_array() vous laisse choisir l'une ou l'autre, voire les deux.
Comment utiliser la fonction mysqli_fetch_array()
L'utilisation de mysqli_fetch_array() nécessite un résultat MySQLi valide. Elle est généralement utilisée dans une boucle while pour parcourir toutes les lignes. Voici un exemple complet avec une gestion basique des erreurs :
Utilisation de base avec une boucle while
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
if (!$mysqli) {
die("Connection failed: " . mysqli_connect_error());
}
$query = "SELECT * FROM my_table";
$result = mysqli_query($mysqli, $query);
if (!$result) {
die("Query failed: " . mysqli_error($mysqli));
}
// Fetch rows as an associative array
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
echo $row['column1'] . " - " . $row['column2'] . "<br>";
}
mysqli_close($mysqli);
?>Dans cet exemple, nous établissons une connexion et exécutons une requête. Nous vérifions les erreurs de connexion et de requête pour éviter les échecs silencieux. La boucle while appelle mysqli_fetch_array() de manière répétée, retournant false quand il n'y a plus de lignes. La constante MYSQLI_ASSOC garantit que les colonnes sont accessibles par leur nom.
Modes de récupération et utilisation avancée
Le second paramètre de mysqli_fetch_array() contrôle comment la ligne est retournée. Il existe trois constantes utilisables :
MYSQLI_ASSOC– Retourne un tableau associatif (noms de colonnes comme clés).MYSQLI_NUM– Retourne un tableau numérique (indices de colonnes comme clés).MYSQLI_BOTH– Retourne à la fois le tableau associatif et le tableau numérique. C'est le mode par défaut si le second paramètre est omis.
Voici comment récupérer une ligne sous forme de tableau numérique :
Récupération en tableau numérique
<?php
// ... connection and query setup ...
while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
echo $row[0] . " - " . $row[1] . "<br>";
}
?>Avec MYSQLI_BOTH, chaque colonne apparaît deux fois dans le tableau : une fois par son nom et une fois par son index. Cela peut être utile pour du code hérité, mais augmente la consommation mémoire ; MYSQLI_ASSOC ou MYSQLI_NUM est donc généralement préféré pour les applications modernes. Si vous n'avez besoin que d'une forme, préférez les fonctions dédiées mysqli_fetch_assoc() ou mysqli_fetch_row(), qui évitent de construire les clés supplémentaires.
Style orienté objet
mysqli_fetch_array() possède également une forme orientée objet. Si vous avez obtenu le résultat via $mysqli->query(), appelez la méthode sur l'object résultat plutôt que de passer le résultat à la fonction procédurale :
Équivalent POO
<?php
$result = $mysqli->query("SELECT * FROM my_table");
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
echo $row['column1'] . " - " . $row['column2'] . "<br>";
}
?>Les deux styles produisent le même comportement sous-jacent ; choisissez celui qui correspond au reste de votre base de code. Pour mapper chaque ligne vers un object avec des propriétés nommées plutôt qu'un tableau, utilisez mysqli_fetch_object(), et pour récupérer toutes les lignes d'un coup dans un tableau 2D, consultez mysqli_fetch_all().
Conclusion
La fonction mysqli_fetch_array() offre une récupération flexible des lignes depuis des résultats MySQLi. En comprenant ses modes de récupération et en intégrant une gestion basique des erreurs, vous pouvez écrire des requêtes de base de données plus robustes et efficaces en PHP.