我正在尝试添加来自多个mysql数据库的项目计数(我还没有到达添加部分),以打印我的主页上的记录总数。
我从几个我谷歌过的网站上获取了“count”代码的基础知识,但有些地方不太对劲。如果我在phpMyAdmin中单独运行下面的查询,它工作得很好(从这个1数据库中我得到了36个结果),但是当我通过下面的代码在我的php页面中运行它时,它只返回一个计数1。
知道我搞砸了什么吗?谢谢。
$connection="localhost";
$username="myusername";
$password="mypassword";
$database1="mydb1";
$database2="mydb2";
$db1 = mysql_connect($connection,$username,$password) or die(mysql_error());
$sel1 = mysql_select_db($database1, $db1);
$query1 = "SELECT count(postID) FROM my_table";
$result1 = mysql_query($query1, $db1);
$db2 = mysql_connect($connection,$username,$password) or die(mysql_error());
$sel2 = mysql_select_db($database2, $db2);
$query2 = "SELECT count(postID) FROM my_table";
$result2 = mysql_query($query2, $db2) or die(mysql_error());
$total_rows = mysql_num_rows($result2);
print $total_rows; 发布于 2012-04-14 08:41:02
因为它们位于相同的数据库主机(localhost)上,所以您可以在一个查询中获取它们。此方法使用子查询,该子查询将来自每个数据库的查询聚合在一起,然后执行聚合SUM()将它们添加到一起。
SELECT SUM(postcounts) AS total
FROM (
SELECT COUNT(postId) AS postcounts FROM mydb1.my_table
UNION ALL
SELECT COUNT(postId) AS postcounts FROM mydb2.my_table
) allpostsmysql_num_rows()返回计数为1的原因是因为每个查询只返回一行-聚合COUNT(postIdD)。如果您想要检索实际计数,则需要获取行。
假设上面的查询存储在$result中,所需的值将别名为total
if ($result) {
$row = mysql_fetch_assoc($result);
echo $row['total'];
}整个事情看起来是这样的:
$db1 = mysql_connect($connection,$username,$password) or die(mysql_error());
mysql_select_db($database1, $db1);
$query = "
SELECT SUM(postcounts) AS total
FROM (
SELECT COUNT(postId) AS postcounts FROM mydb1.my_table
UNION ALL
SELECT COUNT(postId) AS postcounts FROM mydb2.my_table
) allposts ";
$result = mysql_query($query, $db1);
// Fetch the resultant row
if ($result) {
$row = mysql_fetch_assoc($result);
echo $row['total'];
}发布于 2012-04-14 08:34:16
您正在建立2个连接,但仅打印连接2的结果:
$total_rows = mysql_num_rows($result2);
print $total_rows; 做一些类似的事情:
$total_rows = mysql_num_rows($result2 + $result1);
print $total_rows; https://stackoverflow.com/questions/10149973
复制相似问题