На моей веб-странице я хочу перечислить все базы данных, доступные в 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');
но получение ошибок.... неизвестное имя столбца имя_схемы.
Просто исключите из 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');
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.