列出除信息schema,mysql以外的所有数据库

yhuiod9q  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(295)

在我的网页中,我想通过php列出mysql中所有可用的数据库。
以下代码列出了所有数据库:

<?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');

但出现错误…未知列名。

pdkcd3nj

pdkcd3nj1#

只需从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');

相关问题