2013-03-30 60 views
-2

我試圖寫一個函數來顯示數據庫中的所有表:如何SHOW TABLES工作 - MySQL的

function showTables($host, $user, $pass, $db){ 
    mysql_connect($host,$user,$pass)or die("Unable to connect"); 
    mysql_select_db($db) or die("Unable to select database"); 
    $show_table_query = mysql_query("SHOW TABLES"); 
    $tables=mysql_fetch_assoc($show_table_query); 
    return var_dump($tables); 
    mysql_close(); 
} 

當我查詢更改爲SELECT * FROM table我讓我所有的行只是一個結果集因爲我希望..但因爲它是SHOW TABLES我的函數返回:

array(1) { ["Tables_in_internal"]=> string(8) "activity" }

我如何得到的結果設置爲顯示我,而不是表名的列表?

編輯 我知道大家對堆棧溢出是mysqli的龐大的擁護者,但他們還沒有在PHP6工作的時刻,甚至當他們這樣做它仍然將是月/年之前,大多數人升級。所以請保持呼吸。

+0

只是爲了澄清,你想在你的數據庫表的列表? –

+0

您是否嘗試過*獲取所有返回的行*而不是僅僅*一個*?我也不知道'mysql'與PHP6有什麼關係。它現在已被棄用*。 – deceze

+0

進一步澄清 - 我想要一個表名稱的列表。 –

回答

2
function showTables($host, $user, $pass, $db){ 
    mysql_connect($host,$user,$pass)or die("Unable to connect"); 
    mysql_select_db($db) or die("Unable to select database"); 
    $show_table_query = mysql_query("SHOW TABLES"); 
    $tables=array(); 

    while($table = mysql_fetch_assoc($show_table_query)) { 
     $tables[] = $table; 
    } 

    var_dump($tables); 

    mysql_close(); 
} 
0

看那first example的替代mysql_list_tables:

$sql = "SHOW TABLES FROM $dbname"; 
$result = mysql_query($sql); 
+0

看看http://dev.mysql.com/doc/refman/5.0/en/show-tables.html的FROM是可選的。除此之外我已經嘗試過了。 –

+0

他需要查詢所有表名。 –

0

剛剛嘗試這一點: -

while($table=mysql_fetch_object($show_table_query)) { 
var_dump($table); 
} 
+0

這給了我'對象(stdClass的)#1(1){[ 「Tables_in_internal」] =>字符串(8) 「活動」}' –

+0

代替的var_dump()做的print_r(),看看它打印。 –