mysql_field_type

(PHP 3, 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 手册

例子 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($result, 0);
    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(),但反对这样做。


add a note add a note User Contributed Notes
fusionstream at gmail dot com
18-Sep-2006 12: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)
19-Feb-2006 03: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
07-Jun-2005 01: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
08-Nov-2003 04: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 01: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 10: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'];
}
ludwigp at bigfoot dot com
18-Aug-2000 10:39
Like mysql_fetch_field, this returns the PHP type, not the MySQL type.