2015-04-03 19 views
-3

當我使用在終端降表/ MySQL的

SELECT CONCAT('DROP TABLE ', GROUP_CONCAT(table_name) , ';') 
    AS statement FROM information_schema.tables 
    WHERE table_schema = 'test' AND table_name LIKE '%CS%'; 

我得到的結果作爲DROP TABLE 10CSA,10CSB這個代碼;

但是,當我在php頁面中使用mysql_query();語句中的相同內容時,具有上述表名的表不會被刪除,對此的任何解決方案?

+0

因爲你一次只能放一張桌子 – 2015-04-03 12:06:48

+0

也想用單桌也可以.. – 2015-04-03 12:13:01

+0

我記得表名不能以數字開頭。你需要用反引號來逃避它們。 – 2015-04-03 13:26:32

回答

1

正如Juergen指出的,delete只適用於一張表。相反,生成多條語句:

SELECT CONCAT('DROP TABLE ', table_name , ';') AS statement 
FROM information_schema.tables 
WHERE table_schema = 'test' AND table_name LIKE '%CS%'; 

複製所有這些,一次刪除一個表。

如果您想在應用程序中執行此操作,請從循環中的結果集中一次讀取一行並執行語句。

+0

我想寫一個PHP頁面,我怎麼? – 2015-04-03 12:15:55

+0

@PramodMandicha:寫下它的代碼。只需拿起您選擇的數據庫驅動程序並啓動它。編程鱈魚刪除東西時要格外小心。 – hakre 2015-04-03 12:24:32

+0

我得到了一個解決方案...我試過這樣的東西,, $ sql =「SELECT CONCAT('DROP TABLE',GROUP_CONCAT(table_name),';') AS statement FROM information_schema.tables WHERE table_schema ='test' AND table_name LIKE'_CS_';「; \t \t $ result = mysql_query($ sql); \t \t while($ row = mysql_fetch_array($ result)){ \t \t \t $ code = $ row [0]; \t \t} \t \t mysql_query($ code); – 2015-04-03 12:28:27