Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO:使用行计数确定数据库中的表数?_Php_Mysql_Pdo_Rowcount - Fatal编程技术网

Php PDO:使用行计数确定数据库中的表数?

Php PDO:使用行计数确定数据库中的表数?,php,mysql,pdo,rowcount,Php,Mysql,Pdo,Rowcount,我正在使用一个CMS,它安装一些表,然后验证所有安装的内容是否正确,并尝试计算数据库中的表数。(注意,目标是统计表本身,而不是表中的行) 使用的查询是“showtables”,其结果保存到“$result”。像这样: $link->query("SHOW TABLES") 然后在代码的更深处有一个$result计数,如下所示: if ($result->rowCount() > 0) { $r = $result->fetchAll(PDO::FETCH_ASS

我正在使用一个CMS,它安装一些表,然后验证所有安装的内容是否正确,并尝试计算数据库中的表数。(注意,目标是统计表本身,而不是表中的行)

使用的查询是“showtables”,其结果保存到“$result”。像这样:

$link->query("SHOW TABLES")
然后在代码的更深处有一个$result计数,如下所示:

if ($result->rowCount() > 0) {
    $r = $result->fetchAll(PDO::FETCH_ASSOC);
}else{
    $r = false;
    return $r;
}
当我测试结果时,返回0。(数据库中有14个表)使用SHOW tables时,rowCount是正确的方法吗?从我读到的rowCount仅统计受影响的行。因为SHOW TABLES不会影响任何东西,所以它不会计算任何东西

我的假设正确吗?还是这里发生了其他事情?

试试看

$count = $link->query('show tables')->fetch(PDO::FETCH_NUM);

另一种使用信息的方式是(u 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();
显示表格的另一种方式是:

$count = count($link->query("SHOW TABLES")->fetchAll());

只是好奇-你还不知道号码吗?我无法想象动态获取它的原因。有关通过常规选择获取表列表的信息,请参阅。类似于:常识-不确定,这不是我的代码库,我只是想解决问题。我只能假设作者希望在将来随着CMS的扩展能够灵活地添加更多的表。感谢fvu和xQbert,这些链接看起来很有希望;它应该用于update/delete语句。