2010-09-26 67 views
0

我想列出所有的mysql数据库及其各自的表,我目前使用这个,但任何人都可以推荐,如果有任何更好的方法。CodeIgniter使用多个数据库

$q = $this->db->query('SHOW DATABASES'); 
$databases = $q->result_array(); 

foreach($databases as $db) { 
    $this->db->query('USE '. $db['Database']); 

    $q = $this->db->query('SHOW TABLES'); 
    $tables = $q->result_array();    
} 

回答

2

可以使用information_schema特殊的数据库,里面有说明所有其他数据库,表和列的表。

这种方式,您只需要1个查询:

SELECT table_schema, table_name 
FROM information_schema.tables 
ORDER BY table_schema, table_name; 
+0

我是一个学生,你能告诉我,这是否'information_schema'表适用于所有MySQL默认安装?也可以使用v4 +或v5 +? – Shishant 2010-09-26 17:51:46

+0

@Shishant它只是从版本5.0.2开始添加到mysql:http://dev.mysql.com/tech-resources/articles/mysql-datadictionary.html - 在此之前,您应该使用'SHOW' 。 – Fanis 2010-09-26 18:01:18

+0

非常感谢 – Shishant 2010-09-26 18:10:22