MySQL 函数
在线手册:中文 英文
PHP手册

mysql_field_type

(PHP 4, PHP 5)

mysql_field_type 取得结果集中指定字段的类型

说明

string mysql_field_type ( resource $result , int $field_offset )

mysql_field_type()mysql_field_name() 函数相似。参数完全相同,但返回的是字段类型而不是字段名。字段类型有“int”,“real”,“string”,“blob”以及其它,详见 » MySQL 手册

Example #1 mysql_field_type() 例子

<?php
    mysql_connect
("localhost""mysql_username""mysql_password");
    
mysql_select_db("mysql");
    
$result mysql_query("SELECT * FROM func");
    
$fields mysql_num_fields($result);
    
$rows   mysql_num_rows($result);
    
$table mysql_field_table($result0);
    echo 
"Your '".$table."' table has ".$fields." fields and ".$rows." record(s)\n";
    echo 
"The table has the following fields:\n";
    for (
$i=0$i $fields$i++) {
        
$type  mysql_field_type($result$i);
        
$name  mysql_field_name($result$i);
        
$len   mysql_field_len($result$i);
        
$flags mysql_field_flags($result$i);
        echo 
$type." ".$name." ".$len." ".$flags."\n";
    }
    
mysql_free_result($result);
    
mysql_close();
?>

以上例子将产生如下输出:

Your 'func' table has 4 fields and 1 record(s)
The table has the following fields:
string name 64 not_null primary_key binary
int ret 1 not_null
string dl 128 not_null
string type 9 not_null enum

为向下兼容仍然可以使用 mysql_fieldtype(),但反对这样做。

参数

result

resource 型的结果集。此结果集来自对 mysql_query() 的调用。

field_offset

数值型字段偏移量。 field_offset0 开始。如果 field_offset 不存在,则会发出一个 E_WARNING 级别的错误

返回值

The returned field type will be one of "int", "real", "string", "blob", and others as detailed in the » MySQL documentation.

范例

Example #2 mysql_field_type() example

<?php
mysql_connect
("localhost""mysql_username""mysql_password");
mysql_select_db("mysql");
$result mysql_query("SELECT * FROM func");
$fields mysql_num_fields($result);
$rows   mysql_num_rows($result);
$table  mysql_field_table($result0);
echo 
"Your '" $table "' table has " $fields " fields and " $rows " record(s)\n";
echo 
"The table has the following fields:\n";
for (
$i=0$i $fields$i++) {
    
$type  mysql_field_type($result$i);
    
$name  mysql_field_name($result$i);
    
$len   mysql_field_len($result$i);
    
$flags mysql_field_flags($result$i);
    echo 
$type " " $name " " $len " " $flags "\n";
}
mysql_free_result($result);
mysql_close();
?>

以上例程的输出类似于:

Your 'func' table has 4 fields and 1 record(s)
The table has the following fields:
string name 64 not_null primary_key binary
int ret 1 not_null
string dl 128 not_null
string type 9 not_null enum

注释

Note:

为了向下兼容,可以使用下列已废弃的别名: mysql_fieldtype()

参见


MySQL 函数
在线手册:中文 英文
PHP手册
PHP手册 - N: 取得结果集中指定字段的类型

用户评论:

fred at dinkler dot com (08-Feb-2007 07:52)

In MySQL 4.1.x, the four TEXT types (TINYTEXT, TEXT, MEDIUMTEXT, and LONGTEXT) return 'blob" as field types, not "string".

c dot futterlieb at bluewin dot ch (10-Dec-2006 02:06)

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

fusionstream at gmail dot com (17-Sep-2006 05:19)

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)

(18-Feb-2006 07:52)

This function is broken in 4.4.1 (works fine in 4.3.X).
http://bugs.php.net/35536

harald at weinreichs dot de (06-Jun-2005 06:02)

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.

mariob at menta dot net (07-Nov-2003 08:21)

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

swalif_mesa at hotmail dot com (10-Jul-2003 06:38)

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

krang at krang dot org dot uk (10-Mar-2002 02:13)

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'];
}