MYSQL
This structure represents a handle to one database
connection. It is used for almost all MySQL functions. You
should not try to make a copy of a MYSQL
structure. There is no guarantee that such a copy will be
usable.
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 here. 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
does 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 here:
char * name
The name of the field, as a null-terminated string.
char * table
The name of the table containing this field, if it isn't a
calculated field. For calculated fields, the
table
value is an empty string.
char * def
The default value of this field, as a null-terminated
string. This is 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 MYSQL_TYPE_
symbols shown
in the following table.
Type Value | Type Description |
MYSQL_TYPE_TINY |
TINYINT field |
MYSQL_TYPE_SHORT |
SMALLINT field |
MYSQL_TYPE_LONG |
INTEGER field |
MYSQL_TYPE_INT24 |
MEDIUMINT field |
MYSQL_TYPE_LONGLONG |
BIGINT field |
MYSQL_TYPE_DECIMAL |
DECIMAL or NUMERIC field |
MYSQL_TYPE_NEWDECIMAL |
Precision math DECIMAL or NUMERIC
field (MySQL 5.0.3 and up) |
MYSQL_TYPE_FLOAT |
FLOAT field |
MYSQL_TYPE_DOUBLE |
DOUBLE or REAL field |
MYSQL_TYPE_TIMESTAMP |
TIMESTAMP field |
MYSQL_TYPE_DATE |
DATE field |
MYSQL_TYPE_TIME |
TIME field |
MYSQL_TYPE_DATETIME |
DATETIME field |
MYSQL_TYPE_YEAR |
YEAR field |
MYSQL_TYPE_STRING |
CHAR field |
MYSQL_TYPE_VAR_STRING |
VARCHAR field |
MYSQL_TYPE_BLOB |
BLOB or TEXT field (use
max_length to determine the
maximum length) |
MYSQL_TYPE_SET |
SET field |
MYSQL_TYPE_ENUM |
ENUM field |
MYSQL_TYPE_NULL |
NULL -type field |
MYSQL_TYPE_CHAR |
Deprecated; use MYSQL_TYPE_TINY instead |
You can use the IS_NUM()
macro to test
whether a field has a numeric type. Pass the
type
value to IS_NUM()
and it evaluates 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, as specified in the table definition.
unsigned int max_length
The maximum width of the field for the result set (the
length of the longest field value for the rows actually in
the result set). If you use
mysql_store_result()
or
mysql_list_fields()
, this contains the
maximum length for the field. If you use
mysql_use_result()
, the value of this
variable is zero.
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 Description |
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) |
SET_FLAG |
Field is a SET (deprecated) |
BLOB_FLAG |
Field is a BLOB or TEXT
(deprecated) |
TIMESTAMP_FLAG |
Field is a TIMESTAMP (deprecated) |
Use of the BLOB_FLAG
,
ENUM_FLAG
, SET_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
MYSQL_TYPE_BLOB
,
MYSQL_TYPE_ENUM
,
MYSQL_TYPE_SET
, or
MYSQL_TYPE_TIMESTAMP
instead.
The following example 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:
Flag Status | Description |
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.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.