here are the data types that correspond to the TYPE number returned by fetch_field.
thought i would post this here since i couldn't find the info elsewhere.
numerics
-------------
BIT: 16
TINYINT: 1
BOOL: 1
SMALLINT: 2
MEDIUMINT: 9
INTEGER: 3
BIGINT: 8
SERIAL: 8
FLOAT: 4
DOUBLE: 5
DECIMAL: 246
NUMERIC: 246
FIXED: 246
dates
------------
DATE: 10
DATETIME: 12
TIMESTAMP: 7
TIME: 11
YEAR: 13
strings & binary
------------
CHAR: 254
VARCHAR: 253
ENUM: 254
SET: 254
BINARY: 254
VARBINARY: 253
TINYBLOB: 252
BLOB: 252
MEDIUMBLOB: 252
TINYTEXT: 252
TEXT: 252
MEDIUMTEXT: 252
LONGTEXT: 252
mysqli_result::fetch_field
mysqli_fetch_field
(PHP 5)
mysqli_result::fetch_field -- mysqli_fetch_field — Retorna el próximo campo del resultset
Descripción
Estilo orientado a objetos
object mysqli_result::fetch_field
( void
)
Estilo por procedimientos
Retorna la definición de una columna del resultset como un objeto. Para obtener la información de todas las columnas del resultset hay que llamar esta función reiterativamente.
Parámetros
-
result -
Sólo estilo por procedimientos: Un conjunto de identificadores de resultados devuelto por mysqli_query(), mysqli_store_result() o mysqli_use_result().
Valores devueltos
Retorna un objeto que contiene la información de la columna o FALSE
en el caso de que la información no esté disponible.
| Propiedad | Descripción |
|---|---|
| name | El nombre de la columna |
| orgname | El nombre original de la columna en caso que se haya especificado un alias |
| table | El nombre de la tabla al que este campo pertenece (si no es calculado) |
| orgtable | El nombre original de la tabla en caso que se haya especificado un alias |
| def | Reservado para el valor por omisión, por ahora es siempre "" |
| db | Base de datos (desde PHP 5.3.6) |
| catalog | El nombre del catálogo, siempre "def" (desde PHP 5.3.6) |
| max_length | El largo máximo del campo en el resultset |
| length | El largo del campo, tal como se especifica en la definición de la tabla. |
| charsetnr | El número del juego de caracteres del campo. |
| flags | Un entero que representa las banderas de bits del campo. |
| type | El tipo de datos que se usa en este campo |
| decimals | El número de decimales utilizado (para campos de tipo integer) |
Ejemplos
Ejemplo #1 Estilo orientado a objetos
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* verificar la conexión */
if (mysqli_connect_errno()) {
printf("Conexión fallida: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";
if ($result = $mysqli->query($query)) {
/* Obtener la información del campo de cada columna */
while ($finfo = $result->fetch_field()) {
printf("Nombre: %s\n", $finfo->name);
printf("Tabla: %s\n", $finfo->table);
printf("Largo max: %d\n", $finfo->max_length);
printf("Banderas: %d\n", $finfo->flags);
printf("Tipo: %d\n\n", $finfo->type);
}
$result->close();
}
/* cerrar la conexión */
$mysqli->close();
?>
Ejemplo #2 Estilo por procedimientos
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* verificar la conexión *
if (mysqli_connect_errno()) {
printf("Conexión fallida: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";
if ($result = mysqli_query($link, $query)) {
/* Obtener la información del campo de cada columna */
while ($finfo = mysqli_fetch_field($result)) {
printf("Nombre: %s\n", $finfo->name);
printf("Tabla: %s\n", $finfo->table);
printf("Largo max: %d\n", $finfo->max_length);
printf("Banderas: %d\n", $finfo->flags);
printf("Tipo: %d\n\n", $finfo->type);
}
mysqli_free_result($result);
}
/* cerrar la conexión */
mysqli_close($link);
?>
El resultado de los ejemplos serían:
Nombre: Name Tabla: Country Largo max: 11 Banderas: 1 Tipo: 254 Nombre: SurfaceArea Tabla: Country Largo max: 10 Banderas: 32769 Tipo: 4
Ver también
- mysqli_num_fields() - Obtiene el número de campos de un resultado
- mysqli_fetch_field_direct() - Obtener los metadatos de un único campo
- mysqli_fetch_fields() - Devuelve un array de objetos que representan los campos de un conjunto de resultados
- mysqli_field_seek() - Establecer el puntero del resultado al índice del campo especificado
iansoko at hotmail dot com ¶
1 year ago
ragtag at hotmail dot com ¶
4 years ago
The flags used by MySql are:
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:
<?php
$meta = $mysqli_result_object->fetch_field();
if ($meta->flags & 4) {
echo 'Unique key flag is set';
}
?>
miqrogroove at gmail dot com ¶
3 months ago
Beware the values of the predefined constants. They do not always correlate with the actual field types. For example:
MYSQLI_TYPE_BLOB: 252
MYSQLI_TYPE_TINY_BLOB: 249
MYSQLI_TYPE_MEDIUM_BLOB: 250
MYSQLI_TYPE_LONG_BLOB: 251
MySQLi will indeed return a value of 252 for a tinytext field, but as you can see, this does not correspond to the value of MYSQLI_TYPE_TINY_BLOB.
Anonymous ¶
1 year ago
The constants for the TYPE number returned by fetch_field are enumerated here (MYSQLI_TYPE_*):
http://php.net/manual/en/mysqli.constants.php
