• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • mysql_field_type()

    (PHP 4, PHP 5)

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

    说明

    mysql_field_type(resource $result,int $field_offset): string

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

    参见

    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
    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)
    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
    In MySQL 4.1.x, the four TEXT types (TINYTEXT, TEXT, MEDIUMTEXT, and LONGTEXT) return 'blob" as field types, not "string".
    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
    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'];
    }