PHP Australia Conference 2015

mysqli_result::fetch_fields

mysqli_fetch_fields

(PHP 5)

mysqli_result::fetch_fields -- mysqli_fetch_fieldsReturns an array of objects representing the fields in a result set

Description

Object oriented style

array mysqli_result::fetch_fields ( void )

Procedural style

array mysqli_fetch_fields ( mysqli_result $result )

This function serves an identical purpose to the mysqli_fetch_field() function with the single difference that, instead of returning one object at a time for each field, the columns are returned as an array of objects.

Parameters

result

Procedural style only: A result set identifier returned by mysqli_query(), mysqli_store_result() or mysqli_use_result().

Return Values

Returns an array of objects which contains field definition information or FALSE if no field information is available.

Object properties
Property Description
name The name of the column
orgname Original column name if an alias was specified
table The name of the table this field belongs to (if not calculated)
orgtable Original table name if an alias was specified
max_length The maximum width of the field for the result set.
length The width of the field, as specified in the table definition.
charsetnr The character set number for the field.
flags An integer representing the bit-flags for the field.
type The data type used for this field
decimals The number of decimals used (for integer fields)

Examples

Example #1 Object oriented style

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

/* check connection */
if (mysqli_connect_errno()) {
    
printf("Connect failed: %s\n"mysqli_connect_error());
    exit();
}

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

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

    
/* Get field information for all columns */
    
$finfo $result->fetch_fields();

    foreach (
$finfo as $val) {
        
printf("Name:     %s\n"$val->name);
        
printf("Table:    %s\n"$val->table);
        
printf("max. Len: %d\n"$val->max_length);
        
printf("Flags:    %d\n"$val->flags);
        
printf("Type:     %d\n\n"$val->type);
    }
    
$result->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 Procedural style

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

/* check connection */
if (mysqli_connect_errno()) {
    
printf("Connect failed: %s\n"mysqli_connect_error());
    exit();
}

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

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

    
/* Get field information for all columns */
    
$finfo mysqli_fetch_fields($result);

    foreach (
$finfo as $val) {
        
printf("Name:     %s\n"$val->name);
        
printf("Table:    %s\n"$val->table);
        
printf("max. Len: %d\n"$val->max_length);
        
printf("Flags:    %d\n"$val->flags);
        
printf("Type:     %d\n\n"$val->type);
    }
    
mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);
?>

The above examples will output:

Name:     Name
Table:    Country
max. Len: 11
Flags:    1
Type:     254

Name:     SurfaceArea
Table:    Country
max. Len: 10
Flags:    32769
Type:     4

See Also

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
9 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
5 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