mysqli_result::fetch_fields

mysqli_fetch_fields

(PHP 5)

mysqli_result::fetch_fields -- mysqli_fetch_fieldsDevuelve un array de objetos que representan los campos de un conjunto de resultados

Descripción

Estilo orientado a objetos

array mysqli_result::fetch_fields ( void )

Estilo por procedimientos

array mysqli_fetch_fields ( mysqli_result $result )

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, como fue especificado en la definición de la tabla.
charsetnr El número del conjunto de caracteres 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("localhost""mi_usuario""mi_contraseña""world");

/* comprobar la conexión */
if (mysqli_connect_errno()) {
    
printf("Falló la conexión: %s\n"mysqli_connect_error());
    exit();
}

$consulta "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";

if (
$resultado $mysqli->query($consulta)) {

    
/* Obtener la información de campo de 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("Banderas:      %d\n"$valor->flags);
        
printf("Tipo:          %d\n"$valor->type);
    }
    
$resultado->close();
}

/* cerrar la conexión */
$mysqli->close();
?>

Ejemplo #2 Estilo por procedimientos

<?php
$enlace 
mysqli_connect("localhost""mi_usuario""mi_contraseña""world");

/* comprobar la conexión */
if (mysqli_connect_errno()) {
    
printf("Falló la conexión: %s\n"mysqli_connect_error());
    exit();
}

$consulta "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";

if (
$resultado mysqli_query($enlace$consulta)) {

    
/* Obtener la información de campo de 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("Banderas:      %d\n"$valor->flags);
        
printf("Tipo:          %d\n"$valor->type);
    }
    
mysqli_free_result($resultado);
}

/* cerrar la conexión */
mysqli_close($enlace);
?>

El resultado de los ejemplos serían:

Nombre:        Name
Tabla:         Country
Longitud máx.: 11
Banderas:      1
Tipo:          254

Nombre:        SurfaceArea
Tabla:         Country
Longitud máx.: 10
Banderas:      32769
Tipo:          4

Ver también

add a note add a note

User Contributed Notes 3 notes

up
9
AndrewRoz
3 years ago
The field info bit-flags used by MySql are:                                                                                                                                           
(Thanks to ragtag at hotmail dot com)
<?php
/*
       NOT_NULL_FLAG = 1                                                                             
       PRI_KEY_FLAG = 2                                                                              
       UNIQUE_KEY_FLAG = 4                                                                           
       BLOB_FLAG = 16                                                                                
       UNSIGNED_FLAG = 32                                                                            
       ZEROFILL_FLAG = 64                                                                            
       BINARY_FLAG = 128                                                                             
       ENUM_FLAG = 256                                                                               
       AUTO_INCREMENT_FLAG = 512                                                                     
       TIMESTAMP_FLAG = 1024                                                                         
       SET_FLAG = 2048                                                                               
       NUM_FLAG = 32768                                                                              
       PART_KEY_FLAG = 16384                                                                         
       GROUP_FLAG = 32768                                                                            
       UNIQUE_FLAG = 65536
*/                                                                           

// To test if a flag is set you can use & like so:

 
$meta = $mysqli_result_object->fetch_field();
  if (
$meta->flags & 4) {
     echo
'Unique key flag is set';
  }
?>
up
1
educarme at adinet dot com dot uy
7 months ago
Codigos de tipos de datos devueltos por fetch_fields()

Nombre        Codigo
tinyint_    1
boolean_    1
smallint_    2
int_        3
float_        4
double_        5
real_        5
timestamp_    7
bigint_        8
serial        8
mediumint_    9
date_        10
time_        11
datetime_    12
year_        13
bit_        16
decimal_    246
text_        252
tinytext_    252
mediumtext_    252
longtext_    252
tinyblob_    252
mediumblob_    252
blob_        252
longblob_    252
varchar_    253
varbinary_    253
char_        254
binary_        254
up
1
andre at koethur dot de
3 months ago
Here are two methods for converting the 'type' and 'flags' attributes to text for debugging purposes. They both use the predefined MYSQLI_ constants to generate the text.

<?php

public static function h_type2txt($type_id)
{
    static
$types;

    if (!isset(
$types))
    {
       
$types = array();
       
$constants = get_defined_constants(true);
        foreach (
$constants['mysqli'] as $c => $n) if (preg_match('/^MYSQLI_TYPE_(.*)/', $c, $m)) $types[$n] = $m[1];
    }

    return
array_key_exists($type_id, $types)? $types[$type_id] : NULL;
}

public static function
h_flags2txt($flags_num)
{
    static
$flags;

    if (!isset(
$flags))
    {
       
$flags = array();
       
$constants = get_defined_constants(true);
        foreach (
$constants['mysqli'] as $c => $n) if (preg_match('/MYSQLI_(.*)_FLAG$/', $c, $m)) if (!array_key_exists($n, $flags)) $flags[$n] = $m[1];
    }

   
$result = array();
    foreach (
$flags as $n => $t) if ($flags_num & $n) $result[] = $t;
    return
implode(' ', $result);
}

?>
To Top