# mysqli_result::fetch_fields

# mysqli_fetch_fields

(PHP 5, PHP 7, PHP 8)

mysqli_result::fetch_fields -- mysqli_fetch_fields — Devuelve un array de objetos que representan los campos de un conjunto de resultados

### Descripción

Estilo orientado a objetos

mysqli_result::fetch_fields(): array

Estilo por procedimientos

mysqli_fetch_fields(mysqli_result `$result`): array

Esta función sirve de propósito idéntico a la función mysqli_fetch_field() con la única diferencia de que, en lugar de devolver un objeto por cada campo, las columnas son devueltas en un array de objetos.

### Parámetros

`result`

  Sólo estilo por procedimientos: Un conjunto de identificadores de resultados devuelto por mysqli_query(), mysqli_store_result() o mysqli_use_result().

### Valores devueltos

Devuelve un array de objetos que contiene la información de definición de los campos o `false` si no hay información de campo disponible.

Propiedades del objeto
Propiedad | Descripción
--- | ---
name | El nombre de la columna
orgname | El nombre original de la columna si se especificó un alias
table | El nombre de la tabla al que pertenece el campo (si no es calculado)
orgtable | El nombre original de la tabla si se especificó un alias
max_length | El ancho máximo del campo del conjunto de resultados.
length | El ancho del campo, en bytes, como se especificó en la definición de la tabla. Observe que este número (bytes) podría diferir del valor de la definición de la tabla (caracteres), dependiendo del conjunto de caracteres que se emplee. Por ejemplo, el conjunto de caracteres utf8 tiene 3 bytes por carácter, por lo que varchar(10) devolverá una longitud de 30 para utf8 (10*3), aunque devuelve 10 para latin1 (10*1).
charsetnr | El número del conjunto de caracteres (id) del campo.
flags | Un entero que representa las banderas de bits del campo.
type | El tipo de datos usado por el campo
decimals | El número de decimales usado (para campos integer)

### Ejemplos

Ejemplo #1 Estilo orientado a objetos

`<?php
$mysqli = new mysqli("127.0.0.1", "root", "foofoo", "sakila");
/* comprobar la conexión */
if (mysqli_connect_errno()) {
printf("Falló la conexión: %s\n", $mysqli->connect_error);
exit();
}
foreach (array('latin1', 'utf8') as $conj_caract) {
// Establecer el conjunto de caracteres para mostrar su impacto en algunos valores (p.ej., longitud en bytes)
$mysqli->set_charset($conj_caract);
$consulta = "SELECT actor_id, last_name from actor ORDER BY actor_id";
echo "======================\n";
echo "Conjunto de caracteres: $conj_caract\n";
echo "======================\n";
if ($resultado = $mysqli->query($consulta)) {
/* Obtener la información del campo para todas las columnas */
$info_campo = $resultado->fetch_fields();
foreach ($info_campo as $valor) {
printf("Nombre: %s\n", $valor->name);
printf("Tabla: %s\n", $valor->table);
printf("Longitud máx.: %d\n", $valor->max_length);
printf("Longitud: %d\n", $valor->length);
printf("Nº conj. caract.: %d\n", $valor->charsetnr);
printf("Banderas: %d\n", $valor->flags);
printf("Tipo: %d\n\n", $valor->type);
}
$resultado->free();
}
}
$mysqli->close();
?>`

Ejemplo #2 Estilo por procedimientos

`<?php
$enlace = mysqli_connect("127.0.0.1", "mi_usuario", "mi_contraseña", "sakila");
/* comprobar la conexión */
if (mysqli_connect_errno()) {
printf("Falló la conexión: %s\n", mysqli_connect_error());
exit();
}
foreach (array('latin1', 'utf8') as $conj_caract) {
// Establecer el conjunto de caracteres para mostrar su impacto en algunos valores (p.ej., longitud en bytes)
mysqli_set_charset($enlace, $conj_caract);
$consulta = "SELECT actor_id, last_name from actor ORDER BY actor_id";
echo "===============================\n";
echo "Conjunto de caracteres: $conj_caract\n";
echo "===============================\n";
if ($resultado = mysqli_query($enlace, $consulta)) {
/* Obtener la información del campo para todas las columnas */
$info_campo = mysqli_fetch_fields($resultado);
foreach ($info_campo as $valor) {
printf("Nombre: %s\n", $valor->name);
printf("Tabla: %s\n", $valor->table);
printf("Longitud máx.: %d\n", $valor->max_length);
printf("Longitud: %d\n", $valor->length);
printf("Nº conj. caract.: %d\n", $valor->charsetnr);
printf("Banderas: %d\n", $valor->flags);
printf("Tipo: %d\n\n", $valor->type);
}
mysqli_free_result($resultado);
}
}
mysqli_close($enlace);
?>`

El resultado de los ejemplos sería:

    ===============================
    Conjunto de caracteres: latin1
    ===============================
    Nombre:           actor_id
    Tabla:            actor
    Longitud máx.:    3
    Longitud:         5
    Nº conj. caract.: 63
    Banderas:         49699
    Tipo:             2

    Nombre:           last_name
    Tabla:            actor
    Longitud máx.:    12
    Longitud:         45
    Nº conj. caract.: 8
    Banderas:         20489
    Tipo:             253

    ===============================
    Conjunto de caracteres: utf8
    ===============================
    Nombre:           actor_id
    Tabla:            actor
    Longitud máx.:    3
    Longitud:         5
    Nº conj. caract.: 63
    Banderas:         49699
    Tipo:             2

    Nombre:           last_name
    Tabla:            actor
    Longitud máx.:    12
    Longitud:         135
    Nº conj. caract.: 33
    Banderas:         20489

### Ver también

- mysqli_num_fields() - Obtiene el número de campos de un resultado
- mysqli_fetch_field_direct() - Obtener los metadatos de un único campo
- mysqli_fetch_field() - Retorna el próximo campo del resultset