我想显示服务器上所有数据库的列表,当我这样做时:
echo mysql_query(" SHOW DATABASES ");
我得到这个错误:
Resource id #3
那么,如何做到这一点?
xqkwcwgp1#
您需要从查询中检索结果集,如下所示:
$set = mysql_query('SHOW DATABASES;'); $dbs = array(); while ($db = mysql_fetch_row($set)) { $dbs[] = $db[0]; } echo implode('<br/>', $dbs);
bgtovc5b2#
很明显,你是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() );
lmvvr0a83#
Jacob Relkin的解决方案非常好。如果你使用MySQL 5。x我只会改变一件事而不是使用SHOW数据库;我会用这个查询SELECT schema_name FROM information_schema。图式;
rm5edbpk4#
只列出有用的数据库,而不列出系统数据库:
$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用户应该具有完全访问权限,否则您将只能看到您至少具有读取权限的数据库。
noj0wjuj5#
您将得到一个查询结果集。您需要像这样检索结果行:
$r = mysql_query("SHOW DATABASES"); while ($row = mysql_fetch_assoc($r)) { print_r($row); }
做这件事有什么意义
5条答案
按热度按时间xqkwcwgp1#
您需要从查询中检索结果集,如下所示:
bgtovc5b2#
很明显,你是PHP的新手,所以这里有一个很大的提示。
“mysql”扩展是旧的和失败的。不要使用它,停止阅读任何告诉你使用它的教程。
相反,learn PDO,它适用于大多数数据库引擎,并 * 帮助你做正确的事情 *。下面是一个例子:
lmvvr0a83#
Jacob Relkin的解决方案非常好。
如果你使用MySQL 5。x我只会改变一件事
而不是使用SHOW数据库;我会用这个查询
SELECT schema_name FROM information_schema。图式;
rm5edbpk4#
只列出有用的数据库,而不列出系统数据库:
您的MySQL用户应该具有完全访问权限,否则您将只能看到您至少具有读取权限的数据库。
noj0wjuj5#
您将得到一个查询结果集。您需要像这样检索结果行:
做这件事有什么意义