fetch_field_direct
Découvrez la fonction mysqli_fetch_field_direct() en PHP, qui permet de récupérer les métadonnées d'une colonne par son index dans un résultat.
La fonction mysqli_fetch_field_direct() récupère les métadonnées d'une seule colonne dans un ensemble de résultats, sélectionnée directement par sa position numérique. Les métadonnées décrivent la colonne elle-même — son nom, la table dont elle provient, son type de données, sa longueur et ses indicateurs — et non les valeurs de ligne qu'elle contient. Cette page couvre la syntaxe, l'objet renvoyé, un exemple complet et les cas d'utilisation par rapport aux fonctions similaires.
Syntaxe
mysqli_fetch_field_direct(mysqli_result $result, int $index): object|falseEn style orienté objet, le même appel s'écrit $result->fetch_field_direct($index).
$result— un objetmysqli_resultrenvoyé par une requête telle quemysqli_query()(oumysqli_store_result()/mysqli_use_result()).$index— la position à base zéro de la colonne souhaitée. La première colonne est0, la deuxième est1, et ainsi de suite. Un index hors plage fait renvoyerfalseà la fonction.
La valeur de retour est un object dont les propriétés décrivent la colonne. Si l'index est invalide, la fonction renvoie false.
L'objet field
L'objet renvoyé expose les propriétés suivantes :
| Propriété | Description |
|---|---|
name | Le nom de la colonne (ou son alias, si l'un a été utilisé). |
orgname | Le nom original de la colonne si un alias a été défini. |
table | Le nom de la table à laquelle appartient la colonne (ou son alias). |
orgtable | Le nom original de la table si un alias a été défini. |
def | La valeur par défaut de la colonne, sous forme de string. |
max_length | La largeur maximale de la colonne pour l'ensemble de résultats courant. |
length | La largeur déclarée de la colonne, telle que définie dans le schéma de la table. |
decimals | Le nombre de décimales pour les colonnes numériques. |
type | Une constante entière identifiant le type de données (voir ci-dessous). |
flags | Un champ de bits entier des indicateurs de colonne (ex. NOT NULL, clé primaire). |
Comment utiliser mysqli_fetch_field_direct()
Passez un ensemble de résultats valide et l'index de la colonne dont vous avez besoin des métadonnées :
<?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) {
// Metadata for the second column (index 1, zero-based)
$field = mysqli_fetch_field_direct($result, 1);
printf("Name: %s\n", $field->name);
printf("Table: %s\n", $field->table);
printf("Type: %d\n", $field->type); // integer type constant
printf("Length: %d\n", $field->length);
mysqli_free_result($result);
} else {
echo "Query failed: " . mysqli_error($mysqli);
}
mysqli_close($mysqli);
?>Ici, nous nous connectons avec mysqli_connect() et nous protégeons contre un échec de connexion. Nous exécutons une requête avec mysqli_query() et, en cas de succès, nous appelons mysqli_fetch_field_direct($result, 1) pour lire les métadonnées de la deuxième colonne (rappellez-vous que l'index est à base zéro). Nous affichons quelques-unes de ses propriétés et libérons l'ensemble de résultats une fois terminé. Comme type est une constante entière plutôt qu'un nom lisible, nous le formatons avec %d.
Lire la constante de type
La propriété type est l'une des constantes MYSQLI_TYPE_* — un entier, pas un mot comme "varchar". Pour la convertir en quelque chose de lisible, mappez les constantes vous-même :
<?php
$types = [
MYSQLI_TYPE_DECIMAL => 'DECIMAL',
MYSQLI_TYPE_LONG => 'INT',
MYSQLI_TYPE_VAR_STRING => 'VARCHAR',
MYSQLI_TYPE_STRING => 'CHAR',
MYSQLI_TYPE_DATETIME => 'DATETIME',
];
$field = mysqli_fetch_field_direct($result, 0);
echo $types[$field->type] ?? "Unknown ({$field->type})";
?>Quand l'utiliser
Utilisez mysqli_fetch_field_direct() lorsque vous savez déjà quelle colonne vous voulez et que vous pouvez l'adresser par index — par exemple, pour construire un moteur de rendu de tableau générique ou pour valider que la deuxième colonne est bien du type attendu.
- Pour parcourir les métadonnées de chaque colonne une à la fois, utilisez
mysqli_fetch_field(), qui avance un pointeur interne à chaque appel. - Pour récupérer les métadonnées de toutes les colonnes à la fois sous forme d'array, utilisez
mysqli_fetch_fields(). - Pour récupérer les données de ligne plutôt que les métadonnées de colonne, utilisez
mysqli_fetch_assoc(),mysqli_fetch_row()oumysqli_fetch_object(). - Pour connaître le nombre de colonnes dans le résultat avant d'y accéder par index, utilisez
mysqli_field_count().
Conclusion
mysqli_fetch_field_direct() vous donne les métadonnées d'une colonne adressée directement par son index à base zéro, en renvoyant un object avec le nom, la table, le type, la longueur et les indicateurs de la colonne — ou false pour un index hors plage. Elle s'utilise naturellement avec les autres fonctions mysqli_fetch_field* lorsque vous avez besoin d'inspecter la structure d'un ensemble de résultats plutôt que ses lignes.