#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
. Вам лучше переосмыслить дизайн базы данных, вместо того, чтобы использовать несколько таблиц для каждого жанра, вы можете использовать столбец likegenre
и фильтровать из него.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. Приветствую вас. Рад помочь