我创建了一个自定义函数,希望对你有所帮助。
/**
* Get column data type in mysqli
**/
function getColumnDataType($info){
// default data types
$mysql_data_type_hash = array(
1=>'tinyint',
2=>'smallint',
3=>'int',
4=>'float',
5=>'double',
7=>'timestamp',
8=>'bigint',
9=>'mediumint',
10=>'date',
11=>'time',
12=>'datetime',
13=>'year',
16=>'bit',
//252 is currently mapped to all text and blob types (MySQL 5.0.51a)
253=>'varchar',
254=>'char',
246=>'decimal'
);
foreach ($mysql_data_type_hash as $key => $value) {
if($key == $info->type){
echo $value;
}
}
if ($info->flags & MYSQLI_AUTO_INCREMENT_FLAG) {
echo ' AUTO_INCREMENT';
}
if ($info->flags & MYSQLI_NOT_NULL_FLAG) {
echo ' NOT NULL';
}
if ($info->flags & MYSQLI_NUM_FLAG) {
echo ' NUMERIC';
}
if ($info->flags & MYSQLI_UNIQUE_KEY_FLAG) {
echo ' UNIQUE INDEX';
}
}
如何使用它?
假设您的查询是:
$result = mysqli_query($link, "SELECT * FROM mytable");
$finfo = mysqli_fetch_field_direct($result, 0); // checking field 1
// call the function
$type = getColumnDataType($finfo);
echo $type; // int AUTO_INCREMENT NOT NULL NUMERIC
请注意,我的 ist 字段是自动递增的,所以我在结果中得到了这个:
int AUTO_INCREMENT NOT NULL NUMERIC
旁注:
对于其他标志,您可以点击以下链接:
MYSQLI CONSTANTS
Other Stack Answer