PHP MySQL - список всех баз данных, кроме information_schema, mysql

0

На моей веб-странице я хочу перечислить все базы данных, доступные в mysql через PHP.

В следующем коде перечислены все базы данных:

<?php
$link = mysql_connect('localhost', 'root', 'pass123');
$res = mysql_query("SHOW DATABASES");

while ($row = mysql_fetch_assoc($res)) {
    echo $row['Database'] . "\n";
}
?>

Однако я хочу исключить из списка баз данных 'information_schema', 'mysql' and 'performance_schema'.

На терминале mysql я попытался:

show schema_name as database from information_schema.SCHEMATA where schema_name NOT IN ('information_schema','mysql');

но получение ошибок.... неизвестное имя столбца имя_схемы.

  • 0
    «Неизвестное имя столбца schema_name». SQL чувствителен к регистру имен баз данных, таблиц и столбцов
  • 0
    Я думаю, что ошибка больше связана с оператором, начинающим SHOW schema_name а не SELECT schema_name . Тем не менее, SELECT schema_name as database from etc. в database SELECT schema_name as database from etc. и SELECT schema_name as database from etc. еще ошибок , если вы не процитировать использование зарезервированного слова database при использовании его в качестве псевдонима. Имена столбцов никогда не чувствительны к регистру в MySQL.
Теги:

1 ответ

2
Лучший ответ

Просто исключите из php-стороны, как показано ниже.

$link = mysql_connect('localhost', 'root', 'pass123');
$res = mysql_query("SHOW DATABASES");

$exclude_db = array('information_schema', 'mysql', 'performance_schema');
while ($row = mysql_fetch_assoc($res)) {
    if(!in_array($row['Database'], $exclude_db)){
        echo $row['Database'] . "<br />\n";
    }
}

Отредактировано:

Также мы можем исключить в самом запросе, как показано ниже.

SELECT 'schema_name' from INFORMATION_SCHEMA.SCHEMATA  WHERE 'schema_name' NOT IN('information_schema', 'mysql', 'performance_schema');
  • 0
    Спасибо, это работает

Ещё вопросы

Сообщество Overcoder
Наверх
Меню