2012-04-14 88 views
3

我想添加從多個mysql數據庫(我還沒有到添加部分)項目的計數來打印我的主頁上的記錄總數。如何從多個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; 
+0

爲什麼要創建連接的多個實例?你可以簡單地有一個'mysql_select_db' – hjpotter92 2012-04-14 00:37:43

回答

3

由於這些都是在同數據庫主機(本地主機),你可以在一個查詢中獲得它們。此方法使用子查詢,它將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']; 
} 
+0

美麗!它完美的工作!非常感謝......並一路教育我。我的MySQL和PHP技能都很小,但當我看到一個很好的例子時,我是一個很好的學習者,就像你提供的那樣。再次感謝! – Andi 2012-04-14 00:55:43

+0

@安迪樂意幫忙。完整而翔實的答案對我來說非常重要 – 2012-04-14 01:36:14

0

你讓2個連接,但你只能從連接2打印結果:

$total_rows = mysql_num_rows($result2); 
print $total_rows; 

做這樣的事情:

$total_rows = mysql_num_rows($result2 + $result1); 
print $total_rows; 
+0

嗨保羅。我想我沒有解釋清楚。我是說我還沒有嘗試添加。我知道我會做像上面那樣的事情。我只是說,我試圖從只有一個數據庫拉結果是不工作,使用我有的代碼。 – Andi 2012-04-14 00:38:33

+0

對不起,我的錯。看起來你正在設置變量'$ sel2',但你沒有做任何事情。 PHP不知道你想要選擇什麼。 – 2012-04-14 00:43:56