在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; }