这是我用来获取列信息(包括类型和标志)的代码。
$flags = array('NOT_NULL_FLAG' => 1,
'PRI_KEY_FLAG' => 2,
'UNIQUE_KEY_FLAG' => 4,
'BLOB_FLAG' => 16,
'UNSIGNED_FLAG' => 32,
'ZEROFILL_FLAG' => 64,
'BINARY_FLAG' => 128,
'ENUM_FLAG' => 256,
'AUTO_INCREMENT_FLAG' => 512,
'TIMESTAMP_FLAG' => 1024,
'SET_FLAG' => 2048,
'NUM_FLAG' => 32768,
'PART_KEY_FLAG' => 16384,
'GROUP_FLAG' => 32768,
'UNIQUE_FLAG' => 65536);
$types = array('TINYINT' => 1,
'SMALLINT' => 2,
'INT' => 3,
'FLOAT' => 4,
'DOUBLE' => 5,
'BIGINT' => 8,
'MEDIUMINT' => 9,
'BIT' => 16,
'DECIMAL' => 246,
'TIMESTAMP' => 7,
'DATE' => 10,
'TIME' => 11,
'DATETIME' => 12,
'YEAR' => 13,
'VARCHAR' => 253,
'CHAR' => 254,
'TEXT' => 252);
$result = $mysqli->query('SELECT * FROM table LIMIT 1');
$info = info_array($result);
foreach ($info as &$meta) {
$meta->_flags = get_flags_array($meta, $flags);
}
function get_flags_array($meta, $flags)
{
$output = array();
foreach ($flags as $key => $value) {
if ($meta->flags & $value) $output[$key] = $value;
}
return $output;
}
function info_array($result)
{
$output = array();
foreach ($result->fetch_fields() as $info_object) {
$output[$info_object->name] = $info_object;
}
return $output;
}
因此,这将得到完整的列信息,例如$info
数组:
Array
(
[id] => stdClass Object
(
[name] => id
[orgname] => id
[table] => table_name
[orgtable] => table_name
[def] =>
[db] => database_name
[catalog] => def
[max_length] => 1
[length] => 11
[charsetnr] => 63
[flags] => 49667
[type] => 3
[decimals] => 0
[_flags] => Array
(
[NOT_NULL_FLAG] => 1
[PRI_KEY_FLAG] => 2
[AUTO_INCREMENT_FLAG] => 512
[NUM_FLAG] => 32768
[PART_KEY_FLAG] => 16384
[GROUP_FLAG] => 32768
)
)
[title] => stdClass Object
....
http://dev.mysql.com/doc/refman/5.0/en/getting-information。 HTML – 2014-10-26 23:44:40