2016-05-08 46 views
0

我想在我的數據庫中顯示錶的名稱。我寫這個代碼:顯示錶只獲取表的姓氏

function affiche_liste() 
{ 
$db=new PDO('mysql:host=localhost;dbname=testf','root',''); 
    $result = $db->query("SHOW TABLES"); 
     foreach($result->fetch(PDO::FETCH_NUM) as $data) { 
      $tableList = $data[0]; 
     } 
     return $tableList; 
} 

它給我只有最後一張表嗎?

+0

你對此代碼的期望是什麼? –

+0

https://dev.mysql.com/doc/refman/5.0/en/tables-table.html也許show tables不被視爲通過驅動程序有效的SQL語句...嘗試'SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema ='db_name''而不是?哦,你不是在處理過程中用每條記錄覆蓋你的表格列表數據嗎? '$ tableList = $ data [0];'似乎只是在循環中覆蓋。這將解釋爲什麼你只顯示最後一個... – xQbert

+0

我想顯示所有我的表名存在於數據庫中。 – user1674906

回答

0

對於一個簡單的查詢沒有參數和SQL硬編碼,你可以使用一個通用的函數將連接和SQL傳遞給函數。 以下函數()返回包含結果集中所有行的數組。

function queryAll($db,$query){ 
    $sth = $db->query($query); 
    $result = $sth->fetchAll(PDO::FETCH_NUM); 
    return $result; 
} 

對於不帶參數和SQL硬編碼的簡單查詢,可以使用通用函數將連接和SQL傳遞給該函數。 以下函數()返回包含結果集中所有行的數組。

function queryAll($db,$query){ 
    $sth = $db->query($query); 
    $result = $sth->fetchAll(PDO::FETCH_NUM); 
    return $result; 
} 

$db=new PDO('mysql:host=localhost;dbname=testf','root',''); 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$query = "SHOW TABLES"; 
$tables = queryAll($db,$query); 
print_r($tables); 
-1

每次循環播放結果時,都會覆蓋變量tableList。相反,您需要附加到結果數組。

function affiche_liste() 
{ 
    $db=new PDO('mysql:host=localhost;dbname=testf','root',''); 
    $result = $db->query("SHOW TABLES"); 
    $tableList = array(); 
    foreach($result->fetch(PDO::FETCH_NUM) as $data) { 
     array_push($tableList, $data[0]); 
    } 
    return $tableList; 
} 
+0

你的代碼給了我一個空白頁...... – user1674906

-1

試試這個 `

function affiche_liste() 
{$db=new PDO('mysql:host=localhost;dbname=testf','root',''); 
    $result = $db->query("SHOW TABLES"); 
     foreach($result->fetch(PDO::FETCH_NUM) as $data) { 
      $tableList[] = $data[0]; 
     } 
     return $tableList; 
} 

`

我希望它會工作... 這裏您陣列overwitting每次...這是你得到的原因最後的表名....所以你需要追加到現有的數組...

+0

我在服務web上工作的方法的寄存器是這樣的$ server-> register('affiche_liste',array(),array('return'=>'xsd :串'));你的代碼給了我一個空白頁面。我想我在方法註冊時出錯了。 – user1674906