W3docs

fetch_field_direct

En este artículo nos centraremos en la función mysqli_fetch_field_direct() de PHP, usada para obtener metadatos de una columna por su índice numérico

La función mysqli_fetch_field_direct() obtiene los metadatos de una sola columna en un conjunto de resultados, seleccionada directamente por su posición numérica. Los metadatos describen la propia columna — su nombre, la tabla de la que proviene, su tipo de datos, longitud y flags — en lugar de los valores de fila almacenados en ella. Esta página cubre la sintaxis, el object que devuelve, un ejemplo completo y cuándo utilizarla en lugar de las funciones relacionadas.

Sintaxis

mysqli_fetch_field_direct(mysqli_result $result, int $index): object|false

En estilo orientado a objetos, la misma llamada es $result->fetch_field_direct($index).

  • $result — un object mysqli_result devuelto por una consulta como mysqli_query() (o mysqli_store_result() / mysqli_use_result()).
  • $index — la posición basada en cero de la columna que deseas. La primera columna es 0, la segunda es 1, y así sucesivamente. Un índice fuera de rango hace que la función devuelva false.

El valor de retorno es un object cuyas propiedades describen la columna. Si el índice no es válido, la función devuelve false.

El object field

El object devuelto expone las siguientes propiedades:

PropiedadDescripción
nameEl nombre de la columna (o su alias, si se utilizó uno).
orgnameEl nombre original de la columna si se estableció un alias.
tableEl nombre de la tabla a la que pertenece la columna (o su alias).
orgtableEl nombre original de la tabla si se estableció un alias.
defEl valor predeterminado de la columna, como string.
max_lengthEl ancho máximo de la columna para el conjunto de resultados actual.
lengthEl ancho declarado de la columna, tal como se definió en el esquema de la tabla.
decimalsEl número de decimales para columnas numéricas.
typeUna constante entera que identifica el tipo de datos (ver más abajo).
flagsUn campo de bits entero con los flags de la columna (p. ej. NOT NULL, clave primaria).

Cómo usar mysqli_fetch_field_direct()

Pasa un conjunto de resultados válido y el índice de la columna cuyos metadatos necesitas:

<?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);
?>

Aquí nos conectamos con mysqli_connect() y protegemos contra una conexión fallida. Ejecutamos una consulta con mysqli_query() y, si tiene éxito, llamamos a mysqli_fetch_field_direct($result, 1) para leer los metadatos de la segunda columna (recuerda que el índice es basado en cero). Imprimimos algunas de sus propiedades y liberamos el conjunto de resultados cuando terminamos. Como type es una constante entera en lugar de un nombre legible, lo formateamos con %d.

Interpretar la constante de tipo

La propiedad type es una de las constantes MYSQLI_TYPE_* — un entero, no una palabra como "varchar". Para convertirla en algo legible, mapea las constantes tú mismo:

<?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})";
?>

Cuándo utilizarla

Recurre a mysqli_fetch_field_direct() cuando ya sabes qué columna quieres y puedes direccionarla por índice — por ejemplo, al construir un renderizador de tablas genérico o al validar que la segunda columna realmente es del tipo que esperas.

Conclusión

mysqli_fetch_field_direct() te proporciona los metadatos de una columna direccionada directamente por su índice basado en cero, devolviendo un object con el nombre, tabla, tipo, longitud y flags de la columna — o false para un índice fuera de rango. Se combina de forma natural con las otras funciones mysqli_fetch_field* cuando necesitas inspeccionar la estructura de un conjunto de resultados en lugar de sus filas.

Práctica

Práctica
¿Qué hace la función fetch_field_direct() en PHP?
¿Qué hace la función fetch_field_direct() en PHP?
Was this page helpful?