簡體   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