我要顯示我的服務器上的所有數據庫的列表,當我這樣做:如何在PHP腳本上顯示MySQL數據庫?
echo mysql_query(" SHOW DATABASES ");
我得到這個錯誤:
Resource id #3
那麼怎麼辦呢?
我要顯示我的服務器上的所有數據庫的列表,當我這樣做:如何在PHP腳本上顯示MySQL數據庫?
echo mysql_query(" SHOW DATABASES ");
我得到這個錯誤:
Resource id #3
那麼怎麼辦呢?
您需要從查詢中檢索結果集,就像這樣:
$set = mysql_query('SHOW DATABASES;');
$dbs = array();
while($db = mysql_fetch_row($set))
$dbs[] = $db[0];
echo implode('<br/>', $dbs);
你得到的查詢結果集。您需要檢索這樣的結果行:
$r = mysql_query("SHOW DATABASES");
while ($row = mysql_fetch_assoc($r)) {
print_r($row);
}
是奧特做
很明顯,你是新來的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());
Jacob Relkin的解決方案非常好。
但是,如果你正在使用MySQL 5.x的,我只會改變一兩件事:
使用SHOW DATABASES相反的;我會用這個查詢
SELECT schema_name FROM information_schema.schemata;
你能否提供解釋? – 2011-03-09 03:14:54
'information_schema'是一個標準化的跨數據庫方式來詢問模式(MySQL中的數據庫),表,視圖,列等。 – Charles 2011-03-09 03:21:05
這裏僅列出有用的數據庫,而不是系統的:
$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用戶應該有充分的機會,否則,你只會看到你已經至少讀權限的數據庫。
同樣的方式你處理每一個返回行的其他查詢? – 2011-03-09 02:44:37
我建議你先閱讀[手冊](http://php.net/manual/en/mysql.examples-basic.php)或教程。 – deceze 2011-03-09 02:45:30