开发者

Regular Expression to parse SQL Structure

I am trying to parse the MySQL data types returned by "DESCRIBE [TABLE]".

It returns strings like:

int(11)

float

varchar(200)

int(11) unsigned

float(6,2)

I've tried to do the job using regular expressions but it's not working.

PHP CODE:

开发者_如何学C$string = "int(11) numeric";<br/>
$regex = '/(\w+)\s*(\w+)/';<br/>
var_dump( preg_split($regex, $string) );<br/>


Query the information schema for introspection of tables and columns, and more.


I wrote code to do this in Zend_Db_Adapter_Mysqli::describeTable().
It handles varchar, char, decimal, float, and all MySQL integer types.

I won't post the code here because of StackOverflow's CC-wiki license policy, but go check it out at that link.

mysql_fetch_field() only reports data types for query result sets, not persisted tables.

INFORMATION_SCHEMA is another option, but MySQL's early implementation of it has incredibly poor performance, which makes it hard to use in a web app that needs quick response time. Some changes in MySQL 5.1.23 tried to improve the performance, but some people still report problems.


Why not just pull meta-data from the fields directly?

...
$meta = mysql_fetch_field($result, $i);
echo $meta->type;
echo $meta->max_length;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜