In MySQL 4.1.x, the four TEXT types (TINYTEXT, TEXT, MEDIUMTEXT, and LONGTEXT) return 'blob" as field types, not "string".
mysql_field_type
(PHP 4, PHP 5, PECL mysql:1.0)
mysql_field_type — Get the type of the specified field in a result
說明
string mysql_field_type
( resource $result
, int $field_offset
)
mysql_field_type() is similar to the mysql_field_name() function. The arguments are identical, but the field type is returned instead.
參數
- result
-
回傳類型為 resource 的結果集。該結果集從 mysql_query() 的呼叫中得到。
- field_offset
-
數字形式的欄位偏移量。field_offset 開始於 0。如果 field_offset 不存在,系統會發出 E_WARNING 級別的警告信息。
Return值
The returned field type will be one of "int", "real", "string", "blob", and others as detailed in the » MySQL documentation.
範例
Example#1 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_type
fred at dinkler dot com
08-Feb-2007 07:52
08-Feb-2007 07:52
c dot futterlieb at bluewin dot ch
10-Dec-2006 02:06
10-Dec-2006 02:06
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
fusionstream at gmail dot com
17-Sep-2006 04:19
17-Sep-2006 04: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)
18-Feb-2006 07: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
06-Jun-2005 05:02
06-Jun-2005 05: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
07-Nov-2003 08:21
07-Nov-2003 08: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 05:38
10-Jul-2003 05: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 02:13
10-Mar-2002 02: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'];
}
