Удаление таблицы в mySQLi db, если в имени содержится значение

Я пытаюсь удалить одну или несколько таблиц сразу в моей базе данных mySQLi, если она содержит строковую переменную. Так, например, скажем, у меня есть 5 таблиц в моей базе данных:

Таблица 1 - имя: db_table1_hello

Таблица 2 - имя: db_table2_world

Таблица 3 - имя: db_table3_hello

Таблица 4 - имя: db_table4_world

Таблица 5 - имя: db_table5_hello

Теперь у меня есть переменная tableString со значением hello, теоретически она будет использоваться для удаления таблиц 1, 3 и 5.

Не совсем уверен, как лучше всего это сделать, поэтому я решил опубликовать его и получить идею от кого-то, у кого немного больше опыта, чем у меня.

Заранее спасибо, ребята.

Обновлено:

$sql = "";

    if (mysqli_query($conn, $sql)){

        header("Location: " . $_SERVER["HTTP_REFERER"]);

    } else {  

        echo "Table deletion unsuccessfully<br> ";  

    }    

Вы можете получить имена таблиц с помощью SHOW TABLES [FROM db_name] [LIKE 'pattern'], а затем отбросить найденные таблицы.

Eugene Ruban 05.04.2018 10:16
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
106
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ссылаясь на ответ это SO, вы можете фильтровать имена таблиц из таблицы information_schema.tables следующим образом:

SELECT table_name FROM information_schema.tables WHERE table_name like '%hello%';

Таким образом, вы можете создать оператор, включающий предыдущий выбор, следующим образом:

DELIMITER $$
SET @s = SELECT CONCAT('DROP TABLE ',table_name,';') 
         FROM   information_schema.tables 
         WHERE table_name like '%hello%'$$
DELIMITER ;
PREPARE stmt1 FROM @s;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;

Обновлено:

Вопрос изменился, и теперь требуется, чтобы процедура PHP удаляла таблицы. В PHP вы должны запустить первый SQL, чтобы получить имена таблиц, а затем удалить эти таблицы с помощью цикла:

$tableString = "hello";

$sql = "SELECT table_name FROM information_schema.tables WHERE table_name like '%$tableString%'";

$res = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_array($res)) {
    $tname = $row[0];
    $result = mysqli_query($conn, "DROP TABLE $tname");
    if (!$result) echo "Table $tname deletion unsuccessfully<br> ";  
}

Спасибо за ответ, я добавил правку в свой пост. Как мне реализовать это в моем запросе $sql?

Matt Hutch 05.04.2018 10:45

Другие вопросы по теме