2011-01-16 18 views
0

私はこのコードを使用してテーブル名を取得し、変数に格納しようとしています。奇妙なPHPの出力

<?php 
connectDB(); 
$sql = "SHOW TABLES"; 
$result = mysql_query($sql); 
$tables = mysql_fetch_array($result); 
    foreach ($tables as $table) { 
     $table_name = $table[0]; 
     echo $table_name; 
    } 
closeConn(); 
?> 
1の場合

、その出力を「AA」と「BB」私はテーブルごとにいくつかのコードで実行されて何をしたいのか、デシベルと二つにテーブル名をアレント知っている配列インデックスを変更した場合dbと私は上記のコードで使用することができます変数にテーブル名を挿入?どうすればいい?

答えて

3
$tables = mysql_fetch_array($result); 

mysql_fetch_arrayは、セット全体ではなく1つのローをフェッチします。これは、$table[0]を実行すると、実際に行の各フィールドの文字列値を処理していることを意味します。

代わりにループ内mysql_fetch_arrayを置く必要があります。

while ($table = mysql_fetch_array($result)) { 
    $table_name = $table[0]; 
    echo $table_name; 
} 
+0

私は 'echo $ $ table_name \ n"; ' – StasM

+0

をお勧めしたいと思います。なぜ、これが2番目のテーブルから始まって最初のテーブルを無視して、3つのテーブルのうちの2つだけを印刷するのか? – benhowdle89

+0

@StasMこれは '$ table_name'の最終目的ではないと思いますが、それはおそらく良い提案です。 – lonesomeday

1

SHOW TABLESは、行ごとに1つのテーブル名を持つテーブルを返します。テーブルの行があるので、それが唯一1行の表の取得するので、あなたは...、このような何かの

考えるmysql_fetch_arrayな回数を使用する必要があります。

while($row = mysql_fetch_array($result)) { 
    $table_name = $row[0]; 
    // ... 
} 
0

$ SQLの= " 「表を表示する」; $ result = mysql_query($ sql);