Php 数据库中的PDO计数表

Php 数据库中的PDO计数表,php,mysql,count,pdo,Php,Mysql,Count,Pdo,以下函数用于获取数据库中的表 $check = $fsdbh->query('show tables')->fetch(); $dbh = new PDO('...'); $dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 它无法计数,因为它有一个额外的层,即数据库名称 print_r(): 因此,我们需要进一步深入阵列,只需计算数据库的数量。我们该怎么做。默认的抓取样式是PDO::fetc

以下函数用于获取数据库中的表

$check = $fsdbh->query('show tables')->fetch();
$dbh = new PDO('...');
$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
它无法计数,因为它有一个额外的层,即数据库名称

print_r():


因此,我们需要进一步深入阵列,只需计算数据库的数量。我们该怎么做。

默认的抓取样式是
PDO::fetch_tware
,您需要的是
PDO::fetch_ASSOC
PDO::fetch_NUM

有关更多信息,请参阅

此代码应适用于您:

$check = $fsdbh->query('show tables')->fetch(PDO::FETCH_NUM);
您可以做的另一件事是在连接到数据库后,将默认的fetch样式更改为
PDO::fetch_ASSOC

$check = $fsdbh->query('show tables')->fetch();
$dbh = new PDO('...');
$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

默认的获取样式是
PDO::fetch_BOTH
,您需要的是
PDO::fetch_ASSOC
PDO::fetch_NUM

有关更多信息,请参阅

此代码应适用于您:

$check = $fsdbh->query('show tables')->fetch(PDO::FETCH_NUM);
您可以做的另一件事是在连接到数据库后,将默认的fetch样式更改为
PDO::fetch_ASSOC

$check = $fsdbh->query('show tables')->fetch();
$dbh = new PDO('...');
$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

正确的方法是这样做

SELECT count(*)
FROM INFORMATION_SCHEMA
WHERE TABLE_SCHEMA='yourdbname';

正确的方法是这样做

SELECT count(*)
FROM INFORMATION_SCHEMA
WHERE TABLE_SCHEMA='yourdbname';


FETCH_NUM或FETCH_ASSOC都应该可以工作,因为它会阻止您在结果中同时获取关联键和数字索引键(从而使数组中的值数量加倍)。mmm。工作正常,但似乎还有另一个问题。“show tables”仅获取一个表,在该服务器上有2个表database@RobinKnight,您的db用户是否有权访问或读取这两个表?@Marwelln Yes这两个表都是,我创建的任何其他表也被排除在外。“show tables”函数只列出了最新的。FETCH_NUM或FETCH_ASSOC都可以工作,因为它会阻止您在结果中同时获取关联键和数字索引键(从而使数组中的值数量加倍)。mmm。工作正常,但似乎还有另一个问题。“show tables”仅获取一个表,在该服务器上有2个表database@RobinKnight,您的db用户是否有权访问或读取这两个表?@Marwelln Yes这两个表都是,我创建的任何其他表也被排除在外。“show tables”函数只列出了最新的数组。问题不是您所建议的嵌套/多维数组。事实上,您在结果数组中同时获得关联键和数字键。请参阅下面Marwelln的答案,以获得消除结果数组重复的好解决方案。他的方法只生成一个表,因为我对它们都没有评论。这可能是因为当前选定的数据库中只有一个表?问题不是如您所建议的嵌套/多维数组。事实上,您在结果数组中同时获得关联键和数字键。请参阅下面Marwelln的答案,以获得良好的解决方案,该解决方案将消除结果数组中的重复数据。他的方法仅生成1个表,因为我对它们进行了评论。这可能是因为当前选定的数据库中只有一个表?不是PDO。你能把它转换成PDO查询吗?查询是一个查询。PDO只是PHP与数据库接口的一种方法。无论使用哪种接口,都是隐藏的SQL,而不是PDO。你能把它转换成PDO查询吗?查询是一个查询。PDO只是PHP与数据库接口的一种方法。无论使用哪种接口,都是隐藏的SQL。