2017-08-02 64 views
2

我想顯示我的數據庫中的所有表名稱。這是我的代碼:如何顯示從特定的MySQL數據庫中的所有表名php

<?php 
define('DB_HOST', 'localhost'); 
define('DB_USERNAME', 'root'); 
define('DB_PASSWORD', ''); 
define('DB_NAME', 'nucleus'); 
$db=new mysqli(DB_HOST,DB_USERNAME,DB_PASSWORD,DB_NAME); 
$query = $db->prepare('SHOW TABLES FROM `nucleus`'); 
$query->execute(); 
while($rows = $query->fetch()){ 
    echo " $rows"; 
} 
?> 

全部顯示爲1每個條目,我不知道爲什麼。任何解決方案?

+0

請編輯以改進格式(問題的主體「引用」格式錯誤,並且代碼的可讀性可以通過更緊湊來提高)。 – Yunnosch

+0

那是因爲你沒有綁定你的結果。看手冊的例子http://php.net/manual/en/mysqli-stmt.fetch.php – jidexl21

+0

是的,我做了,我得到了答案 – gANDALF

回答

0

所有它是爲每個條目顯示1,我不知道爲什麼

fetch()返回一個布爾值,因此您的1結果。每找到一行,它將返回true

您需要使用bind_result()將結果綁定到可爲每行引用的變量。

$stmt->prepare("SELECT table_name FROM information_schema.tables where table_schema=?") 
$stmt->bind_param('s', 'YOUR_DB_NAME'); 
$stmt->execute(); 
$stmt->bind_result($table); 
$stmt->store_result(); 
while($stmt->fetch()) { 
    echo $table; 
} 
$stmt->close(); 
0

要獲得所有表的名稱中使用:

SELECT table_name FROM information_schema.tables; 

要從特定數據庫的使用得到的表的名稱:

SELECT table_name FROM information_schema.tables where table_schema='<your_database_name>'; 

有關詳細信息,請參閱:http://dev.mysql.com/doc/refman/5.0/en/information-schema.html

+0

我有一個更容易的版本:),謝謝反正 – gANDALF

+0

這是回答不同的題。 – chris85

1

所以,任何尋找可能答案的人,這裏是:

<?php 
$query = $db->prepare('SHOW TABLES FROM `databasename`'); 
$query->execute(); 
$query->bind_result($tables); 
while($query->fetch()){ 
     echo " $tables"; 
} 
?> 
+0

答案是'$ rows'是一個數組,而不是一個字符串。 'echo $ rows ['TABLES'];'...或輸出'$ rows'並查看索引是什麼。 – chris85

相關問題