0
我有以下查询:解析SQL查询
CREATE TABLE `test` (
`col1` INT(10) NOT NULL ,
`col2` VARCHAR(50) NOT NULL ,
`col3` DATE NOT NULL
) ENGINE = MYISAM ;
我想编写一个通用PHP脚本,从上面的查询获取表名(测试)。
我有以下查询:解析SQL查询
CREATE TABLE `test` (
`col1` INT(10) NOT NULL ,
`col2` VARCHAR(50) NOT NULL ,
`col3` DATE NOT NULL
) ENGINE = MYISAM ;
我想编写一个通用PHP脚本,从上面的查询获取表名(测试)。
如果你可以访问你运行查询之前它获取查询字符串,你可以这样做:
preg_match("/^create table `(?P<tablename>)`/i", $query, $matches);
print_r($matches);
/*
Output:
Array
(
[0] => CREATE TABLE `test` (`col1` INT(10) NOT NULL ,`col2` VARCHAR(50) NOT NULL , `col3` DATE NOT NULL) ENGINE = MYISAM ;
[tablename] => test
[1] => test
)
*/
如果你不能因为某些原因访问字符串,但你知道,没有什么创建在查询和代码之间的数据库中,则可以使用此查询检索最后创建的表:
SELECT
*
FROM
information_schema.TABLES
ORDER BY
CREATE_TIME DESC
LIMIT
1;
您可以使用正则表达式。都是CREATE TABLE类型的输入查询吗? – 2011-06-12 17:17:30
什么将是正则表达式。我在正则表达式中不太好.. – Student 2011-06-12 17:18:24
如果你所有的查询都是CREATE TABLE,你可以分割它,只是得到第三个字,对吧? – 2011-06-12 17:18:58