如何获取mysql 字段类型?

vc8fans 2012-05-10 09:01:32
用DLL包

while((field = mysql_fetch_field(m_Result))) //获取该表字段名称保存在CStrligList中
{
str = field->name; //能获取字段名称
str1 = field->type; //获取的字段类型是乱码?????


}

5.5.21 已经不支持mysql_field_type()获取字段函数了。。

如何获取mysql 字段类型?
...全文
243 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zalvsa 2012-05-10
  • 打赏
  • 举报
回复
$sql1 = "show full columns from $tb_name";
$quy1 = mysql_query($sql1);
while($val1 = mysql_fetch_array($quy1))
{
$type = $val1[type];
}
ACMAIN_CHM 2012-05-10
  • 打赏
  • 举报
回复
field->type 是个枚举。


enum enum_field_types type

The type of the field. The type value may be one of the MYSQL_TYPE_ symbols shown in the following table.

Type Value Type Description
MYSQL_TYPE_TINY TINYINT field
MYSQL_TYPE_SHORT SMALLINT field
MYSQL_TYPE_LONG INTEGER field
MYSQL_TYPE_INT24 MEDIUMINT field
MYSQL_TYPE_LONGLONG BIGINT field
MYSQL_TYPE_DECIMAL DECIMAL or NUMERIC field
MYSQL_TYPE_NEWDECIMAL Precision math DECIMAL or NUMERIC
MYSQL_TYPE_FLOAT FLOAT field
MYSQL_TYPE_DOUBLE DOUBLE or REAL field
MYSQL_TYPE_BIT BIT field
MYSQL_TYPE_TIMESTAMP TIMESTAMP field
MYSQL_TYPE_DATE DATE field
MYSQL_TYPE_TIME TIME field
MYSQL_TYPE_DATETIME DATETIME field
MYSQL_TYPE_YEAR YEAR field
MYSQL_TYPE_STRING CHAR or BINARY field
MYSQL_TYPE_VAR_STRING VARCHAR or VARBINARY field
MYSQL_TYPE_BLOB BLOB or TEXT field (use max_length to determine the maximum length)
MYSQL_TYPE_SET SET field
MYSQL_TYPE_ENUM ENUM field
MYSQL_TYPE_GEOMETRY Spatial field
MYSQL_TYPE_NULL NULL-type field

You can use the IS_NUM() macro to test whether a field has a numeric type. Pass the type value to IS_NUM() and it evaluates to TRUE if the field is numeric:

if (IS_NUM(field->type))
printf("Field is numeric\n");
wwwwb 2012-05-10
  • 打赏
  • 举报
回复
SELECT * FROM `information_schema`.`COLUMNS` where `TABLE_NAME`='tbname' and `TABLE_SCHEMA`='dbname'
vc8fans 2012-05-10
  • 打赏
  • 举报
回复
谢谢楼上回复,问题能解决了,,1)用field->type 来switch()枚举表能解析出来了,但麻烦点,
2)show full columns from (table_name) 比较方便快捷,
3)SELECT * FROM `information_schema`.`COLUMNS` where `TABLE_NAME`='db_account' and `TABLE_SCHEMA`='bus' 更方便,因为已经将Varch(13) 分成 varchar 13两个字段,信息更多更细

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧