如何从'MySQL Create Table'查询字符串中获取列名?

Awa*_*wan 2 php mysql string-parsing

我想在PHP中编写一个脚本,将"MySQL Create Table"查询作为字符串并将列名称及其数据类型存储在数组中.

例如:

输入字符串:

CREATE TABLE `test` (
`col1` INT( 10 ) NOT NULL ,
`col2` VARCHAR( 50 ) NOT NULL ,
`col3` DATE NOT NULL
) ENGINE = MYISAM ;
Run Code Online (Sandbox Code Playgroud)

输出:

array(
    array( 'name'=>'col1', 'type'=>'INT', 'size'=>'10' ),
    array( 'name'=>'col2', 'type'=>'VARCHAR', 'size'=>'50' ),
    array( 'name'=>'col3', 'type'=>'DATE', 'size'=>'' )
);
Run Code Online (Sandbox Code Playgroud)

我没有数据库访问权来直接执行查询.有没有这个或任何想法的PHP库?

谢谢

Ben*_*owe 5

使用preg_match_all

preg_match_all("/`(.+)` (\w+)\(? ?(\d*) ?\)?/", $sql, $_matches, PREG_SET_ORDER);
Run Code Online (Sandbox Code Playgroud)

这将生成一个类似的数组

array(
  array('`col1` INT( 10 )', 'col1', 'INT', '10'),
  array('`col2` VARCHAR( 50 )', 'col2', 'VARCHAR', '50'),
  array('`col3` DATE ', 'col3', 'DATE', '')
);
Run Code Online (Sandbox Code Playgroud)