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_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()
参见
mysql_field_name()
取得结果中指定字段的字段名mysql_field_len()
返回指定字段的长度
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']; }