繁体   English   中英

解析 sql 查询

[英]Parse sql query

我有以下查询:

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM