Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 解析sql查询_Php_Sql_Parsing - Fatal编程技术网

Php 解析sql查询

Php 解析sql查询,php,sql,parsing,Php,Sql,Parsing,我有以下疑问: CREATE TABLE `test` ( `col1` INT( 10 ) NOT NULL , `col2` VARCHAR( 50 ) NOT NULL , `col3` DATE NOT NULL ) ENGINE = MYISAM ; 我想编写一个通用php脚本,从上面的查询中获取表名(test)。如果可以在运行查询之前访问查询到的字符串,可以执行以下操作: preg_match("/^create table `(?P<tablename>)`/i",

我有以下疑问:

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

我想编写一个通用php脚本,从上面的查询中获取表名(test)。

如果可以在运行查询之前访问查询到的字符串,可以执行以下操作:

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
     )
*/

您可以使用正则表达式。所有类型的输入查询都是CREATETABLE吗?什么是正则表达式。我不擅长正则表达式。如果您所有的查询都是CREATETABLE,您可以拆分它并只得到第三个单词,对吗?是的。在这种情况下,总是创建查询。可能会以更通用的方式解决此任务。
SELECT 
    *
FROM 
    information_schema.TABLES
ORDER BY 
    CREATE_TIME DESC
LIMIT 
    1;