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

时间:2011-04-28 20:41:23

标签: 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)

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

谢谢你的帮助!

5 个答案:

答案 0 :(得分:12)

如果您正在使用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;
    }
}

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

NUMERICS

BIT:16

TINYINT:1

BOOL:1

SMALLINT:2

MEDIUMINT:9

INTEGER:3

BIGINT:8

SERIAL:8

FLOAT:4

DOUBLE:5

DECIMAL:246

NUMERIC:246

固定:246

日期

日期:10

DATETIME:12

TIMESTAMP:7

时间:11

年份:13

字符串&二进制

CHAR:254

VARCHAR:253

ENUM:254

SET:254

二进制:254

VARBINARY:253

TINYBLOB:252

BLOB:252

MEDIUMBLOB:252

TINYTEXT:252

TEXT:252

MEDIUMTEXT:252

LONGTEXT:252

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

答案 1 :(得分:3)

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

SELECT DATA_TYPE FROM information_schema.COLUMNS WHERE TABLE_NAME = 'my_table' AND COLUMN_NAME = 'my_column'

答案 2 :(得分:0)

php从数据库获取的所有内容始终为string

类型

答案 3 :(得分:0)

为了响应您对获取数据类型的注释,您可以运行查询DESC tablename,并迭代结果集,这将为您提供表中每列的数据。

这会给你一张桌子的所有内容,你当然可以修改帕特里克的答案来做同样的事情(或者如果你想让它更具体地回复它)。

答案 4 :(得分:-1)

  

如何获取表格中列的类型,例如datetime,int(32)或varchar(40)?

显然你不需要它。

  

id应为整数,并通过电子邮件发送varchar

嗯 - 你必须这样问。只需使用mysqli

准备好的声明
$stm = $db->prepare("select 1 `int`, 'str' `string`, NULL `NULL`");
$stm->execute();
$res = $stm->get_result();
$row = $res->fetch_assoc();
var_dump($row);

array(3) {
  ["int"]=>
  int(1)
  ["string"]=>
  string(3) "str"
  ["NULL"]=>
  NULL
}