我目前在我的数据库中有2个表。 (当网站完成时将有50个)在主页面上,我将有一个计数器,显示我的网站/我的数据库中显示的记录总数。我目前能够显示每个表中的行数。我需要这个数字是数据库中所有表中的记录总数。这是我目前的代码。
查询:
// Query for recently added. Total # of rows in table resources
$mysqli = new mysqli("localhost","root", "", "rnddb");
$query = $mysqli->prepare("SELECT * FROM `resources`");
$query->execute();
$query->store_result();
$recentlyadded = $query->num_rows;
显示:
<?php echo $recentlyadded; // Total # of rows ?>
截至目前,这给了我resources
表中的总行数。我需要在所有表上运行查询并将该数字合并给我。任何帮助将不胜感激!感谢。
答案 0 :(得分:0)
一种方法是,如果您的用户可以访问命令“SHOW TABLES”,您可以运行此命令,因为它将返回数据库中的所有表。
您可以运行SQL
SHOW TABLE
它将返回所有表的列表..然后你只需要使用foreach或while语句循环它们,具体取决于你如何收集它们。
while($table = $query->fetch_array(MYSQLI_ASSOC)) {
// do another sql
$sql = "SELECT COUNT(*) FROM ". $table; // or something like that
}
答案 1 :(得分:0)
您可以通过查询INFORMATION_SCHEMA数据库和其中的TABLES表来实现此目的。
这样的事情可能有用:
SELECT SUM(TABLE_ROWS) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA IN (DATABASE())
其中DATABASE()返回您正在使用的当前数据库,因此如果您的数据库名为“mydb”,那么DATABASE()将返回“mydb”。
你可以通过替换这样的函数来为任何数据库执行类似的操作:
SELECT SUM(TABLE_ROWS) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA IN ('otherdb')
重要提示:
您可以在此处了解详情:http://dev.mysql.com/doc/refman/5.5/en/information-schema.html