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