©
Ce document utilise Manuel du site Web PHP chinois Libérer
(PHP 4, PHP 5)
mysql_field_type — 取得结果集中指定字段的类型
$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 ( $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() ,但反对这样做。
result
resource 型的结果集。此结果集来自对 mysql_query() 的调用。
field_offset
数值型字段偏移量。
field_offset
从 0 开始。如果
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 ( $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
Note:
为了向下兼容,可以使用下列已废弃的别名: mysql_fieldtype()
[#1] fred at dinkler dot com [2007-02-08 11:52:37]
In MySQL 4.1.x, the four TEXT types (TINYTEXT, TEXT, MEDIUMTEXT, and LONGTEXT) return 'blob" as field types, not "string".
[#2] c dot futterlieb at bluewin dot ch [2006-12-10 06:06:52]
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
[#3] fusionstream at gmail dot com [2006-09-17 09:19:22]
krang at krang dot org dot uk
Condensed version of what KRANG said.
To get info on the MYSQL field type, use this code
<?php
$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)
[#4] [2006-02-18 11:52:37]
This function is broken in 4.4.1 (works fine in 4.3.X).
http://bugs.php.net/35536
[#5] mariob at menta dot net [2003-11-07 12:21:24]
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
[#6] swalif_mesa at hotmail dot com [2003-07-09 22:38:25]
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
[#7] krang at krang dot org dot uk [2002-03-10 06:13:16]
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'];
}