如何获取表格中列的类型,例如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。
谢谢你的帮助!答案 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;
}
}
这会打印出一些数字,这些数字表示每列的类型如下:
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
}