以下函数旨在获取数据库中的表。
$check = $fsdbh->query('show tables')->fetch();
它无法计数,因为它有一个额外的层,即数据库名称。
打印_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';