文字

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 ( $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_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 ( $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()

参见

  • mysql_field_name() - 取得结果中指定字段的字段名
  • mysql_field_len() - 返回指定字段的长度

用户评论:

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

上一篇: 下一篇: