我的MYSQL数据库中有很多表。我希望能够回显数据库中所有行的总数。
所以基本上我想拥有它,所以下图中的圆圈总和在PHP中回显。
这是我当前的代码,只显示一个表中的总行数($ txid)。我尝试用*替换$ txid,但它不起作用。任何帮助是极大的赞赏。谢谢。
mysql_select_db($dbname);
$result = mysql_query("select count(1) FROM $txid");
$row = mysql_fetch_array($result);
$total = $row[0];
echo $total;
?>
答案 0 :(得分:9)
使用架构:
SELECT SUM(TABLE_ROWS)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '{DB_NAME}'
这就是phpmyadmin正在使用的。
答案 1 :(得分:1)
没有办法在多个表之间“通配” - 这就是为什么规范化[面向行的]设计是好的的原因之一。
相反,必须以这样的方式编写查询(或多个查询),以便手动指定所有表 - 也就是说,每个表都有一个单独的SELECT 。然后可以将它们与UNION ALL和SUM进行分组,或者在单独运行每个查询后用PHP求和。
select SUM(i) as total
from (
select count(*) as i FROM tx
union all
select count(*) as i FROM tx2
-- repeated for each table
) counts
(SQL可以在PHP或MySQL中从要查询的表列表中动态生成。)
如果您只需要粗略估计,则可以查询INFORMATION_SCHEMA TABLES.TABLE_ROWS表 - 实际上这会提供面向行的设计。但是,至少对于InnoDB表, not 保证返回与直接COUNT相同的结果。
对于InnoDB表,行计数只是SQL优化中使用的粗略估计。
答案 2 :(得分:1)
使用INFORMATION_SCHEMA
数据库。它始终是获取元数据信息的好方法:
SELECT SUM(TABLE_ROWS)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'your_database';
这是您更新的PHP代码:
mysql_select_db($dbname);
$result = mysql_query("SELECT SUM(TABLE_ROWS) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '$dbname'");
$row = mysql_fetch_array($result);
$total = $row[0];
echo $total;