|
MYSQL
-
This structure represents a handle to one database connection. It is
used for almost all MySQL functions.
MYSQL_RES
-
This structure represents the result of a query that returns rows
(
SELECT , SHOW , DESCRIBE , EXPLAIN ). The
information returned from a query is called the result set in the
remainder of this section.
MYSQL_ROW
-
This is a type-safe representation of one row of data. It is currently
implemented as an array of counted byte strings. (You cannot treat these as
null-terminated strings if field values may contain binary data, because such
values may contain null bytes internally.) Rows are obtained by calling
mysql_fetch_row() .
MYSQL_FIELD
-
This structure contains information about a field, such as the field's
name, type and size. Its members are described in more detail below.
You may obtain the
MYSQL_FIELD structures for each field by
calling mysql_fetch_field() repeatedly. Field values are not part of
this structure; they are contained in a MYSQL_ROW structure.
MYSQL_FIELD_OFFSET
-
This is a type-safe representation of an offset into a MySQL field
list. (Used by
mysql_field_seek() .) Offsets are field numbers
within a row, beginning at zero.
my_ulonglong
-
The type used for the number of rows and for
mysql_affected_rows() ,
mysql_num_rows() and mysql_insert_id() . This type provides a
range of 0 to 1.84e19 .
On some systems, attempting to print a value of type my_ulonglong
will not work. To print such a value, convert it to unsigned long
and use a %lu print format. Example:
printf (Number of rows: %lu\n", (unsigned long) mysql_num_rows(result));
The MYSQL_FIELD structure contains the members listed below:
char * name
-
The name of the field.
char * table
-
The name of the table containing this field, if it isn't a calculated field.
For calculated fields, the
table value is a NULL pointer.
char * def
-
The default value of this field (set only if you use
mysql_list_fields() ).
enum enum_field_types type
-
The type of the field.
The
type value may be one of the following:
Type value | Type meaning
|
FIELD_TYPE_TINY | TINYINT field
|
FIELD_TYPE_SHORT | SMALLINT field
|
FIELD_TYPE_LONG | INTEGER field
|
FIELD_TYPE_INT24 | MEDIUMINT field
|
FIELD_TYPE_LONGLONG | BIGINT field
|
FIELD_TYPE_DECIMAL | DECIMAL or NUMERIC field
|
FIELD_TYPE_FLOAT | FLOAT field
|
FIELD_TYPE_DOUBLE | DOUBLE or REAL field
|
FIELD_TYPE_TIMESTAMP | TIMESTAMP field
|
FIELD_TYPE_DATE | DATE field
|
FIELD_TYPE_TIME | TIME field
|
FIELD_TYPE_DATETIME | DATETIME field
|
FIELD_TYPE_YEAR | YEAR field
|
FIELD_TYPE_STRING | String (CHAR or VARCHAR ) field
|
FIELD_TYPE_BLOB | BLOB or TEXT field (use max_length to determine the maximum length)
|
FIELD_TYPE_SET | SET field
|
FIELD_TYPE_ENUM | ENUM field
|
FIELD_TYPE_NULL | NULL -type field
|
FIELD_TYPE_CHAR | Deprecated; use FIELD_TYPE_TINY instead
|
You can use the IS_NUM() macro to test whether or not a field has a
numeric type. Pass the type value to IS_NUM() and it
will evaluate to TRUE if the field is numeric:
if (IS_NUM(field->type))
printf("Field is numeric\n");
unsigned int length
-
The width of the field.
unsigned int max_length
-
The maximum width of the field for the result set. If you used
mysql_list_fields() , this contains the maximum length for the field.
unsigned int flags
-
Different bit-flags for the field. The
flags value may have zero
or more of the following bits set:
Flag value | Flag meaning
|
NOT_NULL_FLAG | Field can't be NULL
|
PRI_KEY_FLAG | Field is part of a primary key
|
UNIQUE_KEY_FLAG | Field is part of a unique key
|
MULTIPLE_KEY_FLAG | Field is part of a non-unique key.
|
UNSIGNED_FLAG | Field has the UNSIGNED attribute
|
ZEROFILL_FLAG | Field has the ZEROFILL attribute
|
BINARY_FLAG | Field has the BINARY attribute
|
AUTO_INCREMENT_FLAG | Field has the AUTO_INCREMENT attribute
|
ENUM_FLAG | Field is an ENUM (deprecated)
|
BLOB_FLAG | Field is a BLOB or TEXT (deprecated)
|
TIMESTAMP_FLAG | Field is a TIMESTAMP (deprecated)
|
Use of the BLOB_FLAG , ENUM_FLAG and TIMESTAMP_FLAG flags
is deprecated because they indicate the type of a field rather than an
attribute of its type. It is preferable to test field->type against
FIELD_TYPE_BLOB , FIELD_TYPE_ENUM or FIELD_TYPE_TIMESTAMP
instead.
The example below illustrates a typical use of the flags value:
if (field->flags & NOT_NULL_FLAG)
printf("Field can't be null\n");
You may use the following convenience macros to determine the boolean
status of the flags value:
IS_NOT_NULL(flags) | True if this field is defined as NOT NULL
|
IS_PRI_KEY(flags) | True if this field is a primary key
|
IS_BLOB(flags) | True if this field is a BLOB or TEXT (deprecated; test field->type instead)
|
unsigned int decimals
-
The number of decimals for numeric fields.
|