2013-01-31 25 views
0

我使用的CMS安装了一些表格,然后验证所有安装正确的尝试来统计数据库中表的数量。 (注意目标是统计表格本身而不是表格中的行)PDO:使用rowCount确定数据库中的表的数量?

查询使用的是“SHOW TABLES”,其结果保存为“$ result”。像这样:

$link->query("SHOW TABLES") 

然后越往下代码有上$结果计数,像这样:

if ($result->rowCount() > 0) { 
    $r = $result->fetchAll(PDO::FETCH_ASSOC); 
}else{ 
    $r = false; 
    return $r; 
} 

当我测试我得到0的结果返回。 (DB中有14个表)是否使用SHOW TABLES时,rowCount是适用的正确方法?从我读的rowCount只计算受影响的行。由于SHOW TABLES不会影响任何内容,因此不会计算任何内容。

我的假设是否正确或者是否有其他事情正在进行?

+0

只是好奇 - 你不知道多少了吗?我无法想象动态获取它的原因。 –

+0

请参阅http://stackoverflow.com/questions/64894/select-data-from-show-tables-mysql-query获取通过常规选择表的列表。 – fvu

+0

类似于:http://stackoverflow.com/questions/11378375/alias-to-show-tables-mysql-result – xQbert

回答

0

尝试

$count = $link->query('show tables')->fetch(PDO::FETCH_NUM); 
0

另一种方式与INFORMATION_SCHEMA:

$sql = " 
SELECT COUNT(*) AS 'Tables' 
FROM information_schema.TABLES 
WHERE table_schema = 'YOUR_DB_NAME' 
GROUP BY table_schema 
"; 

$count = $link->query($sql)->fetchColumn(); 

SHOW TABLES另一种方法是:

$count = count($link->query("SHOW TABLES")->fetchAll());