field_count
Découvrez la fonction mysqli_field_count() en PHP, qui retourne le nombre de colonnes de la dernière requête exécutée sur une connexion MySQLi.
La fonction mysqli_field_count() retourne le nombre de colonnes produites par la requête la plus récente exécutée sur une connexion MySQLi. C'est un moyen rapide d'inspecter la structure d'un jeu de résultats sans conserver l'objet résultat — une vérification pratique après l'exécution d'un SELECT, ou après une requête dont vous souhaitez valider le nombre de colonnes avant de récupérer les lignes.
Cet article couvre la syntaxe de la fonction, ses paramètres et sa valeur de retour, en quoi elle diffère de la fonction étroitement liée mysqli_num_fields(), ainsi que des exemples exécutables (en style procédural et orienté objet).
Syntaxe
// Procedural style
mysqli_field_count(mysqli $mysql): int
// Object-oriented style
$mysqli->field_count: int // property, read as $mysqli->field_count| Partie | Description |
|---|---|
$mysql | Un lien de connexion retourné par mysqli_connect() (style procédural uniquement). |
| Valeur de retour | Un int — le nombre de colonnes pour la dernière requête sur cette connexion. Retourne 0 lorsque la dernière instruction n'a produit aucun jeu de résultats (par exemple INSERT, UPDATE ou DELETE). |
Notez que la forme orientée objet est une propriété en lecture seule ($mysqli->field_count), et non un appel de méthode.
Comment utiliser mysqli_field_count()
Vous appelez la fonction sur une connexion active immédiatement après l'exécution d'une requête. Il n'est pas nécessaire de capturer l'objet résultat — mysqli_field_count() lit le nombre de colonnes directement depuis l'état de la dernière requête de la connexion.
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
if (mysqli_connect_errno()) {
die("Connection failed: " . mysqli_connect_error());
}
$query = "SELECT id, name, email FROM users";
mysqli_query($mysqli, $query);
$num_fields = mysqli_field_count($mysqli);
printf("Number of columns: %d\n", $num_fields); // Number of columns: 3
mysqli_close($mysqli);
?>Ici, nous nous connectons avec mysqli_connect() et vérifions mysqli_connect_errno() pour abandonner proprement en cas d'échec. Nous exécutons un SELECT qui retourne trois colonnes, puis lisons le nombre de colonnes depuis la connexion. La sortie est Number of columns: 3.
mysqli_field_count() vs mysqli_num_fields()
Ces deux fonctions répondent à la même question — « combien de colonnes ? » — mais les lisent depuis des endroits différents :
mysqli_field_count($mysqli)prend la connexion et indique les colonnes de la requête la plus récente. Utilisez-la lorsque vous ne disposez pas (ou ne souhaitez pas) de l'objet résultat.mysqli_num_fields($result)prend un objet résultat retourné parmysqli_query(). Utilisez-la lorsque vous détenez déjà le résultat et êtes sur le point de l'itérer.
<?php
$mysqli = mysqli_connect("localhost", "user", "pass", "shop");
$result = mysqli_query($mysqli, "SELECT id, title, price FROM products");
// From the result object:
echo mysqli_num_fields($result), "\n"; // 3
// From the connection (same last query):
echo mysqli_field_count($mysqli), "\n"; // 3
mysqli_free_result($result);
mysqli_close($mysqli);
?>Cas d'utilisation courant : valider le nombre de colonnes
Une utilisation typique consiste à protéger le code qui attend une structure de résultat spécifique — par exemple, confirmer qu'une requête a retourné les colonnes dont vous dépendez avant de commencer à les lire :
<?php
$mysqli = mysqli_connect("localhost", "user", "pass", "shop");
mysqli_query($mysqli, "SELECT id, name FROM categories");
if (mysqli_field_count($mysqli) === 2) {
echo "Result has the expected 2 columns.\n";
} else {
echo "Unexpected column count.\n";
}
mysqli_close($mysqli);
?>Points à surveiller
- Elle indique les colonnes, pas les lignes. Pour le nombre de lignes modifiées par une écriture, utilisez
mysqli_affected_rows(); pour une clé auto-incrémentée après une insertion, utilisezmysqli_insert_id(). - Elle ne reflète que la dernière requête sur la connexion. Si vous exécutez une autre requête entre-temps, le compteur se met à jour.
- Une instruction sans résultat (
INSERT/UPDATE/DELETE) laisse le compteur à0.
Conclusion
mysqli_field_count() est un moyen léger de lire le nombre de colonnes de la requête la plus récente sur une connexion MySQLi — sans conserver l'objet résultat. Utilisez-la pour valider la structure d'un résultat, et préférez mysqli_num_fields() lorsque vous détenez déjà l'objet résultat. Pour explorer les fonctions de gestion des résultats associées, consultez mysqli_query() et mysqli_fetch_field().