2011-03-09 149 views
-2

我要顯示我的服務器上的所有數據庫的列表,當我這樣做:如何在PHP腳本上顯示MySQL數據庫?

echo mysql_query(" SHOW DATABASES "); 

我得到這個錯誤:

Resource id #3 

那麼怎麼辦呢?

+1

同樣的方式你處理每一個返回行的其他查詢? – 2011-03-09 02:44:37

+0

我建議你先閱讀[手冊](http://php.net/manual/en/mysql.examples-basic.php)或教程。 – deceze 2011-03-09 02:45:30

回答

9

您需要從查詢中檢索結果集,就像這樣:

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

你得到的查詢結果集。您需要檢索這樣的結果行:

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

是奧特做

7

很明顯,你是新來的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()); 
+0

mysqli呢?你還會更喜歡PDO嗎?謝謝 – Drewdin 2011-03-09 04:00:16

+0

mysqli古怪的'bind_param'對簡單的工作流程是有害的。我非常喜歡PDO的'execute'方法,並且能夠簡單地傳遞一組值。 – Charles 2011-03-09 04:41:52

+0

感謝您的信息,我會給PDO一個鏡頭,看看我喜歡它 – Drewdin 2011-03-09 14:33:04

2

Jacob Relkin的解決方案非常好。

但是,如果你正在使用MySQL 5.x的,我只會改變一兩件事:

使用SHOW DATABASES相反的;我會用這個查詢

SELECT schema_name FROM information_schema.schemata;

+0

你能否提供解釋? – 2011-03-09 03:14:54

+0

'information_schema'是一個標準化的跨數據庫方式來詢問模式(MySQL中的數據庫),表,視圖,列等。 – Charles 2011-03-09 03:21:05

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用戶應該有充分的機會,否則,你只會看到你已經至少讀權限的數據庫。