PHP 5.6.0beta1 released

mysqli_result::fetch_field

mysqli_fetch_field

(PHP 5)

mysqli_result::fetch_field -- mysqli_fetch_fieldRetorna el próximo campo del resultset

Descripción

Estilo orientado a objetos

object mysqli_result::fetch_field ( void )

Estilo por procedimientos

object mysqli_fetch_field ( mysqli_result $result )

Retorna la definición de una columna del resultset como un objeto. Para obtener la información de todas las columnas del resultset hay que llamar esta función reiterativamente.

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

Retorna un objeto que contiene la información de la columna o FALSE en el caso de que la información no esté disponible.

Propiedades del objeto
Propiedad Descripción
name El nombre de la columna
orgname El nombre original de la columna en caso que se haya especificado un alias
table El nombre de la tabla al que este campo pertenece (si no es calculado)
orgtable El nombre original de la tabla en caso que se haya especificado un alias
def Reservado para el valor por omisión, por ahora es siempre ""
db Base de datos (desde PHP 5.3.6)
catalog El nombre del catálogo, siempre "def" (desde PHP 5.3.6)
max_length El largo máximo del campo en el resultset
length El largo del campo, tal como se especifica en la definición de la tabla.
charsetnr El número del juego de caracteres del campo.
flags Un entero que representa las banderas de bits del campo.
type El tipo de datos que se usa en este campo
decimals El número de decimales utilizado (para campos de tipo integer)

Ejemplos

Ejemplo #1 Estilo orientado a objetos

<?php
$mysqli 
= new mysqli("localhost""my_user""my_password""world");

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

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

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

    
/* Obtener la información del campo de cada columna */
    
while ($finfo $result->fetch_field()) {

        
printf("Nombre:     %s\n"$finfo->name);
        
printf("Tabla:    %s\n"$finfo->table);
        
printf("Largo max: %d\n"$finfo->max_length);
        
printf("Banderas:    %d\n"$finfo->flags);
        
printf("Tipo:     %d\n\n"$finfo->type);
    }
    
$result->close();
}

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

Ejemplo #2 Estilo por procedimientos

<?php
$link 
mysqli_connect("localhost""my_user""my_password""world");

/* verificar la conexión *
if (mysqli_connect_errno()) {
    printf("Conexión fallida: %s\n", mysqli_connect_error());
    exit();
}

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

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

    /* Obtener la información del campo de cada columna */
    
while ($finfo mysqli_fetch_field($result)) {

        
printf("Nombre:     %s\n"$finfo->name);
        
printf("Tabla:      %s\n"$finfo->table);
        
printf("Largo max:  %d\n"$finfo->max_length);
        
printf("Banderas:   %d\n"$finfo->flags);
        
printf("Tipo:       %d\n\n"$finfo->type);
    }
    
mysqli_free_result($result);
}

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

El resultado de los ejemplos serían:

Nombre:     Name
Tabla:      Country
Largo max:  11
Banderas:   1
Tipo:       254

Nombre:     SurfaceArea
Tabla:      Country
Largo max:  10
Banderas:   32769
Tipo:       4

Ver también

add a note add a note

User Contributed Notes 4 notes

up
10
iansoko at hotmail dot com
2 years ago
here are the data types that correspond to the TYPE number returned by fetch_field.

thought i would post this here since i couldn't find the info elsewhere.

numerics
-------------
BIT: 16
TINYINT: 1
BOOL: 1
SMALLINT: 2
MEDIUMINT: 9
INTEGER: 3
BIGINT: 8
SERIAL: 8
FLOAT: 4
DOUBLE: 5
DECIMAL: 246
NUMERIC: 246
FIXED: 246

dates
------------
DATE: 10
DATETIME: 12
TIMESTAMP: 7
TIME: 11
YEAR: 13

strings & binary
------------
CHAR: 254
VARCHAR: 253
ENUM: 254
SET: 254
BINARY: 254
VARBINARY: 253
TINYBLOB: 252
BLOB: 252
MEDIUMBLOB: 252
TINYTEXT: 252
TEXT: 252
MEDIUMTEXT: 252
LONGTEXT: 252
up
5
ragtag at hotmail dot com
5 years ago
The flags used by MySql are:                                                                                                                                           
       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:
<?php
$meta
= $mysqli_result_object->fetch_field();
if (
$meta->flags & 4) {
  echo
'Unique key flag is set';
}
?>
up
1
miqrogroove at gmail dot com
1 year ago
Beware the values of the predefined constants.  They do not always correlate with the actual field types.  For example:

MYSQLI_TYPE_BLOB: 252
MYSQLI_TYPE_TINY_BLOB: 249
MYSQLI_TYPE_MEDIUM_BLOB: 250
MYSQLI_TYPE_LONG_BLOB: 251

MySQLi will indeed return a value of 252 for a tinytext field, but as you can see, this does not correspond to the value of MYSQLI_TYPE_TINY_BLOB.
up
1
Anonymous
2 years ago
The constants for the TYPE number returned by fetch_field are enumerated here (MYSQLI_TYPE_*):
http://php.net/manual/en/mysqli.constants.php
To Top