W3docs

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|false

En style orienté objet, le même appel s'écrit $result->fetch_field_direct($index).

  • $result — un objet mysqli_result renvoyé par une requête telle que mysqli_query() (ou mysqli_store_result() / mysqli_use_result()).
  • $index — la position à base zéro de la colonne souhaitée. La première colonne est 0, la deuxième est 1, et ainsi de suite. Un index hors plage fait renvoyer false à 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
nameLe nom de la colonne (ou son alias, si l'un a été utilisé).
orgnameLe nom original de la colonne si un alias a été défini.
tableLe nom de la table à laquelle appartient la colonne (ou son alias).
orgtableLe nom original de la table si un alias a été défini.
defLa valeur par défaut de la colonne, sous forme de string.
max_lengthLa largeur maximale de la colonne pour l'ensemble de résultats courant.
lengthLa largeur déclarée de la colonne, telle que définie dans le schéma de la table.
decimalsLe nombre de décimales pour les colonnes numériques.
typeUne constante entière identifiant le type de données (voir ci-dessous).
flagsUn 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.

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.

Pratique

Pratique
Que fait la fonction fetch_field_direct() en PHP ?
Que fait la fonction fetch_field_direct() en PHP ?
Was this page helpful?