2012-04-14 21 views
3

私は、複数のmysqlデータベースから項目の数を追加しようとしています(まだ追加することはできませんでした)。複数のMySQLデータベースから値を追加する方法

私はグーグルで調べたカップルのサイトから「カウント」コードの基礎を取得しましたが、何かが正しくありません。 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

答えて

3

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

のような何かを実行します。データベースホスト(localhost)を使用すると、1つのクエリでそれらを取得できます。このメソッドでは、サブデータベースを使用してUNIONが各データベースのクエリをまとめて集計し、集計してSUM()を追加します。集計COUNT(postIdD) - クエリのそれぞれが一列のみを返しますので、あなたのmysql_num_rows()が1の数を返し

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に格納されていた、あなたが必要とする値が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

+0

@Andiお手伝いします。完全で有益な回答が私にとって本当に重要です –

0

あなたは2つの接続を作っているが、あなたが唯一の接続2からの結果を印刷している:これらは同じであるので

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

Hi Paulを持つことができます。私はそれをうまく説明していないと思う。私はまだ追加しようとしていないと言っていました。私はあなたが上記のように何かをすることを理解します。私はちょうど私が持っているコードを使用して、私はわずか1データベースから取得しようとしている結果が動作していないと言っています。 – Andi

+0

申し訳ありませんが、私の間違いです。変数 '$ sel2'を設定しているようですが、何もしません。 PHPは、あなたが選択しようとしているものを知らない。 –

関連する問題