2016-04-18 10 views
2

私はすべてのデータベースを表示できますが、特定のデータベースのすべてのテーブルを表示することができますが、PHPでループまたはforeachを作成して、 mysqlとforeachデータベースでは、データベース名にリンクされたすべてのテーブルを表示します。私はこのような配列をしたい... アレイ([データベース名] =従業員、[テーブル] =名前、surame)単なる一例mysqlとforeachデータベースのすべてのデータベースを表示するにはどうすればいいですか?

は、私はinformation_schemaを使用することがずっと簡単です

$db = new MysqliDb (''); 
$All_databases=$db->rawQuery('SHOW DATABASES'); // this gets all databases 
foreach ($All_databases as $key => $value) { 
    $AllDbs[] = $value['Database']; // array of all databases found 

    $dbname=$value['Database']; // assign $dbname as a database name 

    foreach ($AllDbs as $tbl) { // foreach database found find its tables 

     $db2 = new MysqliDb ($dbname); 
     $db_tables=$db2->rawQuery('SHOW TABLES'); 

     foreach ($db_tables as $tbl) { 
     $table_name=$tbl['Tables_in_'.$dbname.'']; 
     } 
    } 
} 
+0

あなたは$ 'での間のスペースが不足しています'$ value => $ value)'のすべてのデータベースと 'as '' –

+0

はそれを編集しましたが、残念です。 – ernys

答えて

1

を試してみましたそのような情報を照会するテーブル、特にSCHEMATAテーブルとTABLESテーブルが役に立ちます。カンマで区切られたテーブルのリストを生成するために)SCHEMATA上のテーブルを結合し、(GROUP_CONCATを使用するだけで左に、あなたは、単一のクエリで欲しいものを手に入れる

select s.SCHEMA_NAME, group_concat(t.TABLE_NAME) 
from information_schema.SCHEMATA s 
left join information_schema.TABLES t on s.SCHEMA_NAME=t.TABLE_SCHEMA 
group by s.SCHEMA_NAME 
+0

私は次のエラーが表示されます.... Employees.SCHEMATA'は存在しません...従業員が私の最初のデータベースであるところ – ernys

+0

申し訳ありませんが、データベースとしてinformation_schemaをテーブル名に追加する必要があります。更新された回答をご覧ください。 – Shadow

+0

すごくお世話になりました – ernys

関連する問題