在PHP官网上找到的一个获取MySQL数据表的结构信息的函数,稍微改进了下,替换掉过时的ereg函数。现在
这个函数比mysql_list_fields要强大,它能获取到集合结构(set)字段的所有值,这在生成HTML时是非常
有用的。
上代码:
function GetFieldInfo($table) {
global $cfg_dbname,$cfg_dbhost,$cfg_dbuser,$cfg_dbpwd;
$con = mysql_connect($cfg_dbhost, $cfg_dbuser, $cfg_dbpwd);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db($cfg_dbname,$con);
mysql_query("set names utf8");
if($table == '') return false;
$fields = mysql_list_fields($cfg_dbname, $table);
if($fields){
$columns = mysql_query('show columns from ' . $table);
if($columns){
$num = mysql_num_fields($fields);
for($i=0; $i < $num; ++$i){
$column = mysql_fetch_array($columns);
$field = mysql_fetch_field($fields, $i);
$flags = mysql_field_flags($fields, $i);
if($flags == '') $flags=array();
else $flags = explode(' ',$flags);
if (preg_match('/enum.(.*)./',$column['Type'],$match))
$field->values = explode(',',$match[1]);
if (preg_match('/set.(.*)./',$column['Type'],$match))
$field->values = explode(',',$match[1]);
if(!$field->values) $field->values = array();
$field->flags = $flags;
$field->len = mysql_field_len($fields, $i);
$result_fields[$field->name] = $field;
$result_fields[$i] = $field;
}
mysql_free_result($columns);
}
mysql_free_result($fields);
return $result_fields;
}
return false;
}