2015-04-03 3 views
-3

, когда я использую этот код в терминалпадение таблицы с шаблонами в PHP/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;

Но когда я использую то же самое внутри оператора mysql_query(); на php-странице, таблицы с именами таблиц сверху не удаляются, любое решение для этого?

+0

Потому что вы можете удалить только одну таблицу за один раз –

+0

попробовал с одной таблицей также. –

+0

Я помню имена таблиц не могут начинаться с цифр. Вам нужно избегать их с помощью обратных сигналов. –

ответ

1

Как отмечает Юрген, delete применяется только к одному столу за один раз. Вместо этого создайте несколько заявлений:

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

Скопируйте их все, чтобы удалить одну таблицу за раз.

Если вы хотите сделать это внутри приложения, прочитайте одну строку за раз из набора результатов в цикле и выполните инструкцию.

+0

Я хочу написать, что внутри php-страницы, как я? –

+0

@PramodMandicha: записав код для него. Просто возьмите драйвер базы данных по вашему выбору и запустите его. Будьте особенно осторожны при программировании трески, которая удаляет вещи. – hakre

+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); –

Смежные вопросы