gpt4 book ai didi

php - 如何从多个 MySQL 数据库中添加值

转载 作者:可可西里 更新时间:2023-11-01 08:21:03 27 4
gpt4 key购买 nike

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

我已经从我用 Google 搜索过的几个网站中获取了“计数”代码基础知识,但有些地方不太对劲。如果我在 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;

最佳答案

因为它们位于同一数据库主机 (localhost) 上,所以您只需一次查询即可获取它们。此方法使用一个子查询,该子查询将来自每个数据库的查询 UNION 组合在一起,然后执行聚合 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
) allposts

您的 mysql_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'];
}

关于php - 如何从多个 MySQL 数据库中添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10149973/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com