Cette structure représente un gestionnaire de connexion à la base de données. Elle est utilisée dans la plupart des fonctions MySQL.
Cette structure représente le résultat d'une requête qui
retourne des lignes (SELECT
,
SHOW
, DESCRIBE
,
EXPLAIN
). L'information retournée par
une requête est appelée jeu de
résultats dans le reste de cette section.
C'est une représentation sûre pour les types d'une ligne
de données. Elle est actuellement implémentée en tant que
tableau de chaîne à octets comptés. (Vous ne pouvez la
traiter en tant que chaîne terminée par une valeur nulle
si les valeurs du champ peuvent contenir des données
binaires, car de telles valeurs peuvent contenir
elles-mêmes des octets nuls.) Les lignes sont obtenues en
appelant mysql_fetch_row()
.
Cette structure contient des informations à propos du
champ, tel que son nom, son type, et sa taille. Ses membres
sont décrit en plus de détails ici. Vous pouvez obtenir
une structure MYSQL_FIELD
pour chaque
champ en appelant plusieurs fois
mysql_fetch_field()
. Les valeurs des
champs ne font pas partie de la structure; elles sont
contenues dans une structure MYSQL_ROW
.
C'est une représentation sûre des types pour les index
dans une liste de champs MySQL. (Utilisés par
mysql_field_seek()
.) Les index sont des
numéros de champs, dans une ligne, commen¸ant à zéro.
my_ulonglong
Le type utilisé pour le nombre de lignes et pour
mysql_affected_rows()
,
mysql_num_rows()
, et
mysql_insert_id()
. Ce type fournit une
échelle allant de 0
à
1.84e19
.
Sur quelques systèmes, essayer d'écrire la valeur d'un
type my_ulonglong
ne fonctionnera pas.
Pour écrire une telle valeur, convertissez là en
unsigned long
et utilisez un format
d'impression %lu
. Exemple :
printf ("Nombre de lignes : %lu\n", (unsigned long) mysql_num_rows(result));
La structure MYSQL_FIELD
contient les membres
listés ici :
char * name
Le nom du champ, une chaîne terminée par une valeur nulle.
char * table
Le nom de la table contenant ce champ, s'il n'est pas
calculé. Pour les champs calculés, la valeur de
table
est une chaîne vide.
char * def
La valeur par défaut de ce champ, en tant que chaîne
terminée par une valeur nulle. Ce n'est définit que si
vous utilisez mysql_list_fields()
.
enum enum_field_types type
Le type du champ. La valeur de type
peut
être l'une des suivantes :
Valeur de type | Description du type |
FIELD_TYPE_TINY |
Champ TINYINT
|
FIELD_TYPE_SHORT |
Champ SMALLINT
|
FIELD_TYPE_LONG |
Champ INTEGER
|
FIELD_TYPE_INT24 |
Champ MEDIUMINT
|
FIELD_TYPE_LONGLONG |
Champ BIGINT
|
FIELD_TYPE_DECIMAL |
Champ DECIMAL ou NUMERIC
|
FIELD_TYPE_FLOAT |
Champ FLOAT
|
FIELD_TYPE_DOUBLE |
Champ DOUBLE ou REAL
|
FIELD_TYPE_TIMESTAMP |
Champ TIMESTAMP
|
FIELD_TYPE_DATE |
Champ DATE
|
FIELD_TYPE_TIME |
Champ TIME
|
FIELD_TYPE_DATETIME |
Champ DATETIME
|
FIELD_TYPE_YEAR |
Champ YEAR
|
FIELD_TYPE_STRING |
Champ chaîne de caractères (CHAR ou
VARCHAR ) |
FIELD_TYPE_VAR_STRING |
Champ VARCHAR
|
FIELD_TYPE_BLOB |
Champ BLOB ou TEXT (utilisez
max_length pour déterminer la
taille maximale) |
FIELD_TYPE_SET |
Champ SET
|
FIELD_TYPE_ENUM |
Champ ENUM
|
FIELD_TYPE_NULL |
Champ de type NULL
|
FIELD_TYPE_CHAR |
Désapprouvé, utilisez FIELD_TYPE_TINY à la place |
Vous pouvez utiliser la macro IS_NUM()
pour tester si un champ est de type numérique ou non.
Passez la valeur de type
à
IS_NUM()
et elle sera évaluée à TRUE
si le champ est numérique :
if (IS_NUM(field->type)) printf("Le champ est numérique\n");
unsigned int length
La taille du champ, comme spécifié dans la définition de la table.
unsigned int max_length
La longueur maximale du champ pour le jeu de résultats (la
taille de la plus longue valeur de champ actuellement dans
le jeu de résultat). Si vous utilisez
mysql_store_result()
ou
mysql_list_fields()
, cela contient la
longueur maximale pour le champ. Si vous utilisez
mysql_use_result()
, la valeur de cette
variable est zéro.
unsigned int flags
Les différents attributs sous forme de bits pour le champ.
La valeur de flags
peut avoir zéro ou
plusieurs de ces bits suivants activés :
Valeur d'attribut | Description d'attribut |
NOT_NULL_FLAG |
Le champ ne peut être NULL
|
PRI_KEY_FLAG |
Le champ fait parti d'une clef primaire |
UNIQUE_KEY_FLAG |
Le champ fait parti d'une clef unique |
MULTIPLE_KEY_FLAG |
Le champ fait parti d'une clef non-unique |
UNSIGNED_FLAG |
Le champ possède l'attribut UNSIGNED
|
ZEROFILL_FLAG |
Le champ possède l'attribut ZEROFILL
|
BINARY_FLAG |
Le champ possède l'attribut BINARY
|
AUTO_INCREMENT_FLAG |
Le champ possède l'attribut AUTO_INCREMENT
|
ENUM_FLAG |
Le champ est un ENUM (désapprouvé) |
SET_FLAG |
Le champ est un SET (désapprouvé) |
BLOB_FLAG |
Le champ est un BLOB ou TEXT
(désapprouvé) |
TIMESTAMP_FLAG |
Le champ est un TIMESTAMP (désapprouvé) |
L'utilisation des attributs BLOB_FLAG
,
ENUM_FLAG
, SET_FLAG
,
et TIMESTAMP_FLAG
est désapprouvé car
ils indiquent un type de champ plutôt qu'un attribut de
type de champ. Il est préférable de tester
field->type
avec
FIELD_TYPE_BLOB
,
FIELD_TYPE_ENUM
,
FIELD_TYPE_SET
, ou
FIELD_TYPE_TIMESTAMP
à la place.
L'exemple suivant illustre une utilisation typique de la
valeur de flags
:
if (field->flags & NOT_NULL_FLAG) printf("Le champ ne peut être nul\n");
Vous pouvez utiliser les différentes macros ci-dessous pour déterminer le statut booléen de la valeur de l'attribut :
Statut de l'attribut | Description |
IS_NOT_NULL(flags) |
Vrai si le champ est défini en tant que NOT NULL
|
IS_PRI_KEY(flags) |
Vrai si le champ est une clef primaire |
IS_BLOB(flags) |
Vrai si le champ est un BLOB ou
TEXT (désapprouvé; tester
plutôt field->type ) |
unsigned int decimals
Le nombre de décimales pour les champs numériques.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.