Получить имя таблицы, содержащее определенное ключевое слово

#mysql

#MySQL

Вопрос:

У меня есть база данных с именем «movie_tags» в phpmyadmin моего сайта. И у меня есть таблицы «action, sci-fi, romantic, …. «, которые содержат столбцы «id» и «type» внутри «movie_tags».

Я пытаюсь получить имя каждой таблицы, которое содержит ’57’ в столбце ‘id’, с помощью этого кода, используя php и mysql. Но он показывает ошибку «неизвестный идентификатор столбца» в предложении where»

Вот мой код👇

 SELECT table_name 
  FROM information_schema.tables
 WHERE table_schema = 'movie_tags' 
   AND id = '57'
  

Комментарии:

1. В таблице нет столбца id information_schema.tables . Вам лучше переосмыслить дизайн базы данных, вместо того, чтобы использовать несколько таблиц для каждого жанра, вы можете использовать столбец like genre и фильтровать из него.

2. Альтернативой является использование UNION предложения select * from action where id = 57 union all select * from romantic where id = 57 union all ...

3. Я думаю, что если вы обнаружите, что регулярно посещаете information_schema, вероятно, пришло время пересмотреть свой дизайн

Ответ №1:

Вы можете сделать так

 $query1 = mysqli_query($your_connection_to_db, "SHOW TABLES FROM movie_tags");

while ($array = mysqli_fetch_array($query1)){
    $query2 = mysqli_query($your_connection_to_db, "SELECT * FROM `".$array[0]."` WHERE id = '57'");
    $rows = mysqli_num_rows($query2);

    if($rows>0){
        //you can do your code here with $array[0]. Example👇
        echo "your ".$array[0]." table has 57 in it's id column";
    }
}
  

Комментарии:

1. Большое спасибо. Это работает для меня по моему желанию

2. Приветствую вас. Рад помочь