1

私は、いくつかのテーブルをインストールする CMS を使用しており、インストールされているすべてが正しくインストールされていることを確認するために、データベース内のテーブルの数をカウントしようとしています。(目標は、テーブル内の行ではなく、テーブル自体をカウントすることであることに注意してください)

使用されるクエリは「SHOW TABLES」で、この結果は「$result」に保存されます。そのようです:

$link->query("SHOW TABLES")

コードのさらに下には、次のような $result のカウントがあります。

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

結果をテストすると、0 が返されます。(DB には 14 個のテーブルがあります) SHOW TABLES を使用する場合、rowCount は適用する適切な方法ですか? 私が読んだことから、rowCountは影響を受ける行のみをカウントします。SHOW TABLES は何にも影響しないため、何もカウントされません。

私の仮定は正しいですか、それともここで何か他のことが起こっていますか?

4

2 に答える 2

0

試す

$count = $link->query('show tables')->fetch(PDO::FETCH_NUM);
于 2013-01-31T16:46:17.833 に答える
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());
于 2013-01-31T16:53:41.530 に答える