mysqli:如何获取表中列的类型

wol*_*xXx 1 php mysqli

对不起,但是:我怎样才能获得表中列的类型,例如datetime,int(32)或varchar(40)?我有一个结果,即被取入一个物体,vardump打印

object(stdClass)[8]
  public 'id' => string '3' (length=1)
  public 'email' => string 'me@foo.bar' (length=6)
Run Code Online (Sandbox Code Playgroud)

id应该是一个整数并通过电子邮件发送varchar(i)我正在使用php5和mysqli

谢谢你的帮助!

Haz*_*m_M 13

如果您正在使用mysqli,我强烈推荐这么多原因,那就像它一样简单

$query = "SELECT * from " . $table_name;

if($result = $mysqli->query($query)){
    // Get field information for all columns
    while ($column_info = $result->fetch_field()){
        echo $column_info->type;
    }
}
Run Code Online (Sandbox Code Playgroud)

这会打印出一些数字,这些数字表示每列的类型如下:

NUMERICS

比特:16

TINYINT:1

布尔:1

SMALLINT:2

MEDIUMINT:9

整数:3

BIGINT:8

序列号:8

FLOAT:4

双倍:5

DECIMAL:246

NUMERIC:246

固定:246

日期

日期:10

日期:12

时间戳:7

时间:11

年:13

字符串和二进制

CHAR:254

VARCHAR:253

ENUM:254

SET:254

二进制:254

译文:253

TINYBLOB:252

布罗布:252

MEDIUMBLOB:252

TINYTEXT:252

撰文:252

MEDIUMTEXT:252

LONGTEXT:252

有关fetch_field的更多信息,请查看http://us2.php.net/manual/en/mysqli-result.fetch-field.php


Pat*_*ick 5

要获取该信息,您需要查询 information_schema.columns 表。像这样的事情将获取 MySQL 数据类型:

SELECT DATA_TYPE FROM information_schema.COLUMNS WHERE TABLE_NAME = 'my_table' AND COLUMN_NAME = 'my_column'
Run Code Online (Sandbox Code Playgroud)