Retourne un tableau d'objets représentant les champs dans le résultat

# mysqli_result::fetch_fields

# mysqli_fetch_fields

(PHP 5, PHP 7, PHP 8)

mysqli_result::fetch_fields -- mysqli_fetch_fields — Retourne un tableau d'objets représentant les champs dans le résultat

### Description

Style orienté objet

public function mysqli_result::fetch_fields(): array

Style procédural

function mysqli_fetch_fields(mysqli_result `$result`): array

Cette fonction fonctionne comme mysqli_fetch_field() à la différence que, au lieu de retourner un objet à la fois pour chaque champ, les colonnes sont retournées en tant que tableau d'objets.

### Liste de paramètres

`result`
  Style procédural uniquement : Un objet mysqli_result retourné par mysqli_query(), mysqli_store_result(), mysqli_use_result(), ou mysqli_stmt_get_result().

### Valeurs de retour

Renvoie un tableau d'objets contenant des informations sur la définition des champs.

Propriétés de l'objet
Propriété | Description
--- | ---
name | Le nom de la colonne
orgname | Le nom original de la colonne si un alias a été spécifié
table | Le nom de la table à laquelle ce champ appartient (s'il n'a pas été calculé)
orgtable | Le nom original de la table si un alias a été spécifié
def | Inutilisé. Toujours une chaîne vide
db | Le nom de la base de données
catalog | Inutilisé. Toujours `"def"`
max_length | La longueur maximale du champ pour le jeu de résultats. À partir de PHP 8.1, cette valeur est toujours `0`.
length | La largeur du champ en octets. Pour les colonnes de type chaîne de caractères, la valeur de longueur varie en fonction du jeu de caractères de la connexion. Par exemple, si le jeu de caractères est `latin1`, un jeu de caractères mono-octet, la valeur de longueur pour une requête `SELECT 'abc'` est 3. Si le jeu de caractères est `utf8mb4`, un jeu de caractères multioctets dans lequel les caractères occupent jusqu'à 4 octets, la valeur de longueur est 12.
charsetnr | Le numéro du jeu de caractères pour ce champ
flags | Un entier représentant le bit-flags pour ce champ
type | Le type de données utilisées pour ce champ
decimals | Le nombre de décimales pour les champs numériques et la précision des secondes fractionnaires pour les champs temporels.

### Exemples

Exemple #1 Style orienté objet

    <?php
    $mysqli = new mysqli("127.0.0.1", "root", "foofoo", "sakila");

    /* vérification de la connexion */
    if ($mysqli->connect_errno) {
        printf("Échec de la connexion : %s\n", $mysqli->connect_error);
        exit();
    }

    foreach (array('latin1', 'utf8') as $charset) {

        // Définir le jeu de caractère, pour montrer son impact sur certaines valeurs (par exemple, longueurs en octets)
        $mysqli->set_charset($charset);

        $query = "SELECT actor_id, last_name from actor ORDER BY actor_id";

        echo "============================\n";
        echo "Jeu de caractères : $charset\n";
        echo "============================\n";

        if ($result = $mysqli->query($query)) {

            /* Récupère les informations des champs pour toutes les colonnes */
            $finfo = $result->fetch_fields();

            foreach ($finfo as $val) {
                printf("Name:      %s\n",   $val->name);
                printf("Table:     %s\n",   $val->table);
                printf("Max. Len:  %d\n",   $val->max_length);
                printf("Length:    %d\n",   $val->length);
                printf("charsetnr: %d\n",   $val->charsetnr);
                printf("Flags:     %d\n",   $val->flags);
                printf("Type:      %d\n\n", $val->type);
            }
            $result->free();
        }
    }
    $mysqli->close();
    ?>

Exemple #2 Style procédural

    <?php
    $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "sakila");

    /* vérification de la connexion */
    if (mysqli_connect_errno()) {
        printf("Échec de la connexion : %s\n", mysqli_connect_error());
        exit();
    }

    foreach (array('latin1', 'utf8') as $charset) {

        // Définir le jeu de caractère, pour montrer son impact sur certaines valeurs (par exemple, longueurs en octets)
        mysqli_set_charset($link, $charset);

        $query = "SELECT actor_id, last_name from actor ORDER BY actor_id";

        echo "============================\n";
        echo "Jeu de caractères : $charset\n";
        echo "============================\n";

        if ($result = mysqli_query($link, $query)) {

            /* Récupère les informations des champs pour toutes les colonnes */
            $finfo = mysqli_fetch_fields($result);

            foreach ($finfo as $val) {
                printf("Name:      %s\n",   $val->name);
                printf("Table:     %s\n",   $val->table);
                printf("Max. Len:  %d\n",   $val->max_length);
                printf("Length:    %d\n",   $val->length);
                printf("charsetnr: %d\n",   $val->charsetnr);
                printf("Flags:     %d\n",   $val->flags);
                printf("Type:      %d\n\n", $val->type);
            }
            mysqli_free_result($result);
        }
    }

    mysqli_close($link);
    ?>

Les exemples ci-dessus vont afficher :

    ============================
    Jeu de caractères : latin1
    ============================
    Name:      actor_id
    Table:     actor
    Max. Len:  3
    Length:    5
    charsetnr: 63
    Flags:     49699
    Type:      2

    Name:      last_name
    Table:     actor
    Max. Len:  12
    Length:    45
    charsetnr: 8
    Flags:     20489
    Type:      253

    ============================
    Jeu de caractères : utf8
    ============================
    Name:      actor_id
    Table:     actor
    Max. Len:  3
    Length:    5
    charsetnr: 63
    Flags:     49699
    Type:      2

    Name:      last_name
    Table:     actor
    Max. Len:  12
    Length:    135
    charsetnr: 33
    Flags:     20489

### Voir aussi

- mysqli_num_fields() - Récupère le nombre de champs dans l'ensemble de résultats
- mysqli_fetch_field_direct() - Récupère les métadonnées d'un champ unique
- mysqli_fetch_field() - Retourne le prochain champ dans le jeu de résultats

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open