This function is broken in 4.4.1 (works fine in 4.3.X).
http://bugs.php.net/35536
mysql_field_type
(PHP 4, PHP 5)
mysql_field_type — Obtiene el tipo del campo especificado de un resultado
Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro. En su lugar, deberían usarse las extensiones MySQLi o PDO_MySQL. Véase también la guía MySQL: elegir una API y P+F relacionadas para más información. Las alternativas a esta función incluyen:
- mysqli_fetch_field_direct() [type]
- PDOStatement::getColumnMeta() [driver:decl_type] o [pdo_type]
Descripción
$result
, int $field_offset
)mysql_field_type() es similar a la función mysql_field_name(). Los argumentos son idénticos, pero se devuelve en su lugar el tipo de campo.
Parámetros
-
result -
El resultado resource que está siendo evaluado. Este resultado proviene de una llamada a mysql_query().
-
field_offset -
El número del campo a buscar. El valor de
field_offsetcomienza en 0. Sifield_offsetno existe, un error de nivelE_WARNINGes emitido.
Valores devueltos
El tipo de campo devuelto será uno de los siguientes: "int", "real", "string", "blob", y otros tal como se detalla en » la documentación de MySQL.
Ejemplos
Ejemplo #1 Ejemplo de mysql_field_type()
<?php
mysql_connect("localhost", "nombre_usuario_mysql", "cotraseña_mysql");
mysql_select_db("mysql");
$resultado = mysql_query("SELECT * FROM func");
$campos = mysql_num_fields($resultado);
$filas = mysql_num_rows($resultado);
$tabla = mysql_field_table($resultado, 0);
echo "Su tabla '" . $tabla . "' tiene " . $campos . " campos y " . $filas . " registro/s\n";
echo "La tabla tiene los siguientes campos:\n";
for ($i=0; $i < $campos; $i++) {
$tipo = mysql_field_type($resultado, $i);
$nombre = mysql_field_name($resultado, $i);
$longitud = mysql_field_len($resultado, $i);
$banderas = mysql_field_flags($resultado, $i);
echo $tipo . " " . $nombre . " " . $longitud . " " . $banderas . "\n";
}
mysql_free_result($resultado);
mysql_close();
?>
El resultado del ejemplo sería algo similar a:
Su tabla 'func' tiene 4 campos y 1 registro/s La tabla tiene los siguientes campos: string name 64 not_null primary_key binary int ret 1 not_null string dl 128 not_null string type 9 not_null enum
Notas
Nota:
Por razones de compatibilidad con versiones anteriores, los siguientes alias obsoletos podrían usarse: mysql_fieldtype()
Ver también
- mysql_field_name() - Obtiene el nombre del campo especificado de un resultado
- mysql_field_len() - Devuelve la longitud del campo especificado
In MySQL 4.1.x, the four TEXT types (TINYTEXT, TEXT, MEDIUMTEXT, and LONGTEXT) return 'blob" as field types, not "string".
Additional to the note below:
If you're using the "SHOW FIELDS" syntax, be sure that you're adding the table name instead of the db name in the "FROM" parameter:
<?php
$result = mysql_query("SHOW FIELDS FROM table");
?>
Also possible:
<?php
$result = mysql_query("SHOW FIELDS FROM table.db");
?>
or this:
<?php
$result = mysql_query("DESCRIBE table");
?>
http://dev.mysql.com/doc/refman/5.1/en/describe.html
krang at krang dot org dot uk
Condensed version of what KRANG said.
To get info on the MYSQL field type, use this code
<?
$result = mysql_query("SHOW FIELDS FROM db_name");
$i = 1;
while ($row = mysql_fetch_array($result)) { //go through one field at a time
echo "Field $i: ";
print_r($row) //display all information about A field which can be accessed thru the "$row" array.
$i++;
}
?>
Will display something like:
Field 1: Array ( [Field] => SN [Type] => mediumint(8) unsigned [Null] => [Key] => PRI [Default] => [Extra] => auto_increment ) , SN, mediumint(8) unsigned
Field 2: Array ( [Field] => ENTITY_ID [Type] => varchar(20) [Null] => [Key] => [Default] => [Extra] => ) , ENTITY_ID, varchar(20)
For version 4.3.4, types returned are:
STRING, VAR_STRING: string
TINY, SHORT, LONG, LONGLONG, INT24: int
FLOAT, DOUBLE, DECIMAL: real
TIMESTAMP: timestamp
YEAR: year
DATE: date
TIME: time
DATETIME: datetime
TINY_BLOB, MEDIUM_BLOB, LONG_BLOB, BLOB: blob
NULL: null
Any other: unknown
Hmm for the previous comment, note that SHOW FIELDS is an alias of SHOW COLUMNS. Very useful if you need to search the mysql-documentation. Here is the link anyway...
http://www.mysql.com/doc/en/SHOW_DATABASE_INFO.html
The field type returns what PHP classifies the data found in the field, not how it is stored in the database; use the following example to retrieve the MySQL information about the field....
$USERNAME = '';
$PASSWORD = '';
$DATABASE = '';
$TABLE_NAME = '';
mysql_connect('localhost', $USERNAME, $PASSWORD)
or die ("Could not connect");
$result = mysql_query("SHOW FIELDS FROM $DATABASE.$TABLE_NAME");
$i = 0;
while ($row = mysql_fetch_array($result)) {
echo $row['Field'] . ' ' . $row['Type'];
}
The note blow seems incomplete/incorrect. For php 4.3 and mysql 4.x the returned values are:
CHAR, VARCHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, ENUM, SET: string
TINYINT, SMALLINT, MEDIUMINT, INT, INTEGER, BIGINT: int
FLOAT, DOUBLE, DECIMAL, NUMERIC: real
TIMESTAMP: timestamp
YEAR: year
DATE: date
TIME: time
DATETIME: datetime
TINYBLOB, MEDIUMBLOB, LONGBLOB, BLOB: blob
if mysql-field-type seems to return the wrong values, you may encounter an compatibility problem of mysql, php and the libraries you use. Try reinstalling php and mysql.
