mysqli_result::fetch_fields

mysqli_fetch_fields

(PHP 5, PHP 7, PHP 8)

mysqli_result::fetch_fields -- mysqli_fetch_fieldsRetorna um array de objetos representando os campos em um conjunto de resultados

Descrição

Estilo orientado a objetos

public mysqli_result::fetch_fields(): array

Estilo procedural

mysqli_fetch_fields(mysqli_result $result): array

Esta função serve para o mesmo propósito que a função mysqli_fetch_field() com uma simples diferença, ao invés de retornar um objeto de cada vez para cada campo, as colunas são retornadas como um array de objetos.

Parâmetros

result

Somente no estilo procedural: Um objeto mysqli_result retornado por mysqli_query(), mysqli_store_result(), mysqli_use_result() ou mysqli_stmt_get_result().

Valor Retornado

Retorna um array de objetos contendo informações de definições de campo.

Propriedades dos objetos
Propriedade Descrição
name O nome da coluna
orgname O nome original da coluna se foi especificado um apelido
table O nome da tabela à qual o campo pertence (se não calculado)
orgtable Nome da tabela original se foi especificado um apelido
def Não utilizado. Sempre uma string vazia
db O nome do banco de dados
catalog Não utilizado. Sempre "def"
max_length A largura máxima do campo para o conjunto de resultados. A partir do PHP 8.1, este valor é sempre 0.
length O comprimento do campo em bytes. Para colunas de strings, o valor do comprimento varia conforme o conjunto de caracteres. Por exemplo, se o conjunto de caracteres for latin1, um conjunto de um byte, o valor de comprimento para uma consulta SELECT 'abc' será 3. Se o conjunto for utf8mb4, um conjunto multi-bytes onde os caracteres podem ter até 4 bytes, o valor de comprimento será 12.
charsetnr O número do conjunto de caracteres do campo.
flags Um inteiro representando bits de opções para o campo.
type O tipo de dados usado para este campo
decimals O número de decimais para campos numéricos, e a precisão em segundos fracionários para campos temporais.

Exemplos

Example #1 Estilo orientado a objetos

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

/*verifica a conexão */
if ($mysqli->connect_errno) {
    printf("Conexão falhou: %s\n", $mysqli->connect_error);
    exit();
}

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

    // Define o conjunto de caracteres, para mostrar seu impacto em alguns valores (ex.: comprimento em bytes)
    $mysqli->set_charset($charset);

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

    echo "======================\n";
    echo "Conjunto de Caracteres: $charset\n";
    echo "======================\n";

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

        /* Obtém informação de campo para todas as colunas */
        $finfo = $result->fetch_fields();

        foreach ($finfo as $val) {
            printf("Nome:        %s\n",   $val->name);
            printf("Tabela:      %s\n",   $val->table);
            printf("Comp. máx:   %d\n",   $val->max_length);
            printf("Comprimento: %d\n",   $val->length);
            printf("Id conj. carac: %d\n",   $val->charsetnr);
            printf("Opções:      %d\n",   $val->flags);
            printf("Tipo:        %d\n\n", $val->type);
        }
        $result->free();
    }
}
$mysqli->close();
?>

Example #2 Estilo procedural

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

/*verifica a conexão */
if (mysqli_connect_errno()) {
    printf("Conexão falhou: %s\n", mysqli_connect_error());
    exit();
}

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

    // Define o conjunto de caracteres, para mostrar seu impacto em alguns valores (ex.: comprimento em bytes)
    mysqli_set_charset($link, $charset);

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

    echo "======================\n";
    echo "Conjunto de Caracteres: $charset\n";
    echo "======================\n";

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

        /* Obtém informação de campo para todas as colunas */
        $finfo = mysqli_fetch_fields($result);

        foreach ($finfo as $val) {
            printf("Nome:        %s\n",   $val->name);
            printf("Tabela:      %s\n",   $val->table);
            printf("Comp. máx:   %d\n",   $val->max_length);
            printf("Comprimento: %d\n",   $val->length);
            printf("Id conj. carac: %d\n",   $val->charsetnr);
            printf("Opções:      %d\n",   $val->flags);
            printf("Tipo:        %d\n\n", $val->type);
        }
        mysqli_free_result($result);
    }
}

mysqli_close($link);
?>

Os exemplos acima produzirão:

======================
Conjunto de Caracteres: latin1
======================
Nome:        actor_id
Tabela:      actor
Comp. máx:   3
Comprimento: 5
Id conj. carac: 63
Opções:      49699
Tipo:        2

Nome:        last_name
Tabela:      actor
Comp. máx:   12
Comprimento: 45
Id conj. carac: 8
Opções:      20489
Tipo:        253

======================
Conjunto de Caracteres: utf8
======================
Nome:        actor_id
Tabela:      actor
Comp. máx:   3
Comprimento: 5
Id conj. carac: 63
Opções:      49699
Tipo:        2

Nome:        last_name
Tabela:      actor
Comp. máx:   12
Comprimento: 135
Id conj. carac: 33
Opções:      20489

Veja Também