0

以下函数旨在获取数据库中的表。

$check = $fsdbh->query('show tables')->fetch();

它无法计数,因为它有一个额外的层,即数据库名称。

打印_r():

Array ( [Tables_in_dbtest] => test [0] => test )

所以我们需要进一步进入数组,只计算数据库的数量。我们将如何做到这一点。

4

2 回答 2

3

默认获取样式是PDO::FETCH_BOTH,您需要的是PDO::FETCH_ASSOCPDO::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);
于 2012-08-14T17:46:13.787 回答
1

正确的方法是做

SELECT count(*)
FROM INFORMATION_SCHEMA
WHERE TABLE_SCHEMA='yourdbname';
于 2012-08-14T18:03:29.223 回答