次の関数は、データベース内のテーブルをフェッチするように設計されています。
$check = $fsdbh->query('show tables')->fetch();
データベース名という追加のレイヤーがあるため、カウントできません。
print_r():
Array ( [Tables_in_dbtest] => test [0] => test )
したがって、配列をさらに一歩進めて、データベースの数を数えるだけです。どうすればそれができますか。
デフォルトの取得スタイルは です。PDO::FETCH_BOTH
必要なのはPDO::FETCH_ASSOC
またはPDO::FETCH_NUM
です。
詳細については、fetch
ドキュメントを参照してください。
このコードはあなたのために働くはずです:
$check = $fsdbh->query('show tables')->fetch(PDO::FETCH_NUM);
他にできることは、データベースに接続した後に、 PDO::setAttributeを使用してデフォルトのフェッチ スタイルを変更することです。PDO::FETCH_ASSOC
$dbh = new PDO('...');
$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
適切な方法は、行うことです
SELECT count(*)
FROM INFORMATION_SCHEMA
WHERE TABLE_SCHEMA='yourdbname';