首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从多个MySQL数据库中添加值

问如何从多个MySQL数据库中添加值
EN

Stack Overflow用户
提问于 2012-04-14 08:29:36
回答 2查看 298关注 0票数 3

我正在尝试添加来自多个mysql数据库的项目计数(我还没有到达添加部分),以打印我的主页上的记录总数。

我从几个我谷歌过的网站上获取了“count”代码的基础知识,但有些地方不太对劲。如果我在phpMyAdmin中单独运行下面的查询,它工作得很好(从这个1数据库中我得到了36个结果),但是当我通过下面的代码在我的php页面中运行它时,它只返回一个计数1。

知道我搞砸了什么吗?谢谢。

代码语言:javascript
复制
$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; 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-14 08:41:02

因为它们位于相同的数据库主机(localhost)上,所以您可以在一个查询中获取它们。此方法使用子查询,该子查询将来自每个数据库的查询聚合在一起,然后执行聚合SUM()将它们添加到一起。

代码语言:javascript
复制
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

mysql_num_rows()返回计数为1的原因是因为每个查询只返回一行-聚合COUNT(postIdD)。如果您想要检索实际计数,则需要获取行。

假设上面的查询存储在$result中,所需的值将别名为total

代码语言:javascript
复制
if ($result) {
  $row = mysql_fetch_assoc($result);
  echo $row['total'];
}

整个事情看起来是这样的:

代码语言:javascript
复制
$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'];
}
票数 3
EN

Stack Overflow用户

发布于 2012-04-14 08:34:16

您正在建立2个连接,但仅打印连接2的结果:

代码语言:javascript
复制
$total_rows = mysql_num_rows($result2);
print $total_rows; 

做一些类似的事情:

代码语言:javascript
复制
$total_rows = mysql_num_rows($result2 + $result1);
print $total_rows; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10149973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档