当我这样做时,我想显示服务器上所有数据库的列表:
echo mysql_query(" SHOW DATABASES ");
我收到此错误:
Resource id #3
那怎么办呢?
答案 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);
}
要做到这一点