mysqli_result::fetch_fields

mysqli_fetch_fields

(PHP 5)

mysqli_result::fetch_fields -- mysqli_fetch_fieldsRetourne un tableau d'objets représentant les champs dans le résultat

Description

Style orienté objet

array mysqli_result::fetch_fields ( void )

Style procédural

array mysqli_fetch_fields ( mysqli_result $result )

Cette fonction fonctionne comme mysqli_fetch_field() à la différence que, au lieu de retourner un objet à la fois pour chaque champ, les colonnes sont retournées en tant que tableau d'objets.

Liste de paramètres

result

Style procédural uniquement : Un identifiant de jeu de résultats retourné par la fonction mysqli_query(), mysqli_store_result() ou mysqli_use_result().

Valeurs de retour

Retourne un tableau d'objets qui contient les métadonnées d'un champ ou FALSE si aucune métadonnée n'est disponible pour ce champ.

Propriétés de l'objet
Propriété Description
name Le nom de la colonne
orgname Le nom original de la colonne si un alias a été spécifié
table Le nom de la table à laquelle ce champ appartient (s'il n'a pas été calculé)
orgtable Le nom original de la table si un alias a été spécifié
max_length La longueur maximale du champ pour le jeu de résultats
length La largeur du champs, comme spécifiée dans la définition de table
charsetnr Le numéro du jeu de caractères pour ce champs
flags Un entier représentant le bit-flags pour ce champs
type Le type de données utilisées pour ce champs
decimals Le nombre de décimales utilisées (pour les champs de type entier)

Exemples

Exemple #1 Style orienté objet

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

/* Vérification de la connexion */
if (mysqli_connect_errno()) {
    
printf("Échec de la connexion : %s\n"mysqli_connect_error());
    exit();
}

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

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

    
/* Récupère les informations d'un champ pour toutes les colonnes */
    
$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();
}

/* Fermeture de la connexion */
$mysqli->close();
?>

Exemple #2 Style procédural

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

/* Vérification de la connexion */
if (mysqli_connect_errno()) {
    
printf("Échec de la connexion : %s\n"mysqli_connect_error());
    exit();
}

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

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

    
/* Récupère les informations d'un champ pour toutes les colonnes */
    
$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);
}

/* Fermeture de la connexion */
mysqli_close($link);
?>

Les exemples ci-dessus vont afficher :

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

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

Voir aussi

add a note add a note

User Contributed Notes 4 notes

up
10
AndrewRoz
4 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
2
educarme at adinet dot com dot uy
1 year 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
2
andre at koethur dot de
1 year 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);
}

?>
up
0
cz dot paranoiq at gmail dot com
5 months ago
complete list of flags from MySQL source code:

NOT_NULL_FLAG   1       /* Field can't be NULL */
PRI_KEY_FLAG    2       /* Field is part of a primary key */
UNIQUE_KEY_FLAG 4       /* Field is part of a unique key */
MULTIPLE_KEY_FLAG 8     /* Field is part of a key */
BLOB_FLAG   16      /* Field is a blob */
UNSIGNED_FLAG   32      /* Field is unsigned */
ZEROFILL_FLAG   64      /* Field is zerofill */
BINARY_FLAG 128     /* Field is binary   */
ENUM_FLAG   256     /* field is an enum */
AUTO_INCREMENT_FLAG 512     /* field is a autoincrement field */
TIMESTAMP_FLAG  1024        /* Field is a timestamp */
SET_FLAG    2048        /* field is a set */
NO_DEFAULT_VALUE_FLAG 4096  /* Field doesn't have default value */
ON_UPDATE_NOW_FLAG 8192         /* Field is set to NOW on UPDATE */
NUM_FLAG    32768       /* Field is num (for clients) */
PART_KEY_FLAG   16384       /* Intern; Part of some key */
GROUP_FLAG  32768       /* Intern: Group field */
UNIQUE_FLAG 65536       /* Intern: Used by sql_yacc */
BINCMP_FLAG 131072      /* Intern: Used by sql_yacc */
GET_FIXED_FIELDS_FLAG (1 << 18) /* Used to get fields in item tree */
FIELD_IN_PART_FUNC_FLAG (1 << 19)/* Field part of partition func */
To Top