如何在PHP脚本上显示MySQL数据库?

时间:2011-03-09 02:43:05

标签: php mysql

当我这样做时,我想显示服务器上所有数据库的列表:

echo mysql_query(" SHOW DATABASES ");

我收到此错误:

Resource id #3

那怎么办呢?

5 个答案:

答案 0 :(得分:9)

您需要从查询中检索结果集,如下所示:

$set = mysql_query('SHOW DATABASES;');
$dbs = array();
while($db = mysql_fetch_row($set))
   $dbs[] = $db[0];
echo implode('<br/>', $dbs);

答案 1 :(得分:8)

很明显你是PHP新手,所以这里有一个很大的提示。

“mysql”扩展程序已旧并且已被破坏。不要使用它,并停止阅读任何告诉你这是使用的教程。

相反,learn PDO,它适用于大多数数据库引擎,而可以帮助您做正确的事情。这是一个例子:

$dbh = new PDO('mysql:host=localhost;user=foo;password=bar;dbname=baz');
$statement = $dbh->query('SHOW DATABASES');
print_r( $statement->fetchAll() );

答案 2 :(得分:2)

Jacob Relkin的解决方案非常好。

但是,如果您使用的是MySQL 5.x,我只会改变一件事:

而不是使用SHOW DATABASES;我会使用这个查询

SELECT schema_name FROM information_schema.schemata;

答案 3 :(得分:1)

仅列出有用的数据库,而不是系统数据库:

$query = "SELECT schema_name FROM information_schema.schemata WHERE schema_name
    NOT IN ('information_schema', 'mysql', 'performance_schema')";

$result = mysqli_query($link, $query) or die(mysqli_error($link));
$dbs = array();
while($db = mysqli_fetch_row($result))
   $dbs[] = $db[0];
echo implode('<br/>', $dbs);

您的MySQL用户应具有完全访问权限,否则您将只看到您拥有至少读取权限的数据库。

答案 4 :(得分:0)

您正在获取查询结果集。您需要检索结果行,如下所示:

$r = mysql_query("SHOW DATABASES");
while ($row = mysql_fetch_assoc($r)) {
    print_r($row);
}

要做到这一点