2013-01-17 34 views
0

我有一位客戶希望將內容管理軟件的數據庫表中存儲的電子郵件作爲註冊用戶添加到另一個數據庫的html生成表中我已經創建了存儲每個商店的所有數據。一個註冊用戶可以有二十家商店。如何將該用戶的電子郵件從CMS數據庫連接到他們擁有的來自其他數據庫的登記商店的html表輸出。如何在MySQL中顯示來自兩個不同數據庫的數據w/php

下面的插圖有希望解釋什麼是難以用言語解釋的。在DB1「用戶」是一樣的在DB2 for每次他們自己的商店「ID」 - 見下:

USER DATABASE (DB1) ===================== 

USER | EMAIL | NAME | WEBSITE 
----------------------------------------- 
user1 | email1 | name1 | website 1 
user2 | email2 | name2 | website 2 
user3 | email3 | name3 | website 3 


STORE DATABASE (DB2) ==================== 

ID  | STORE | CITY | STATE 
----------------------------------------- 
user1 | store1a | city1a | state1a 
user1 | store1a | city1a | state1a 
user2 | store1b | city1b | state1b 
user2 | store1b | city1b | state1b 
user2 | store1b | city1b | state1b 
user3 | store1c | city1c | state1c 
user3 | store1c | city1c | state1c 

現在我想產生HTML表格的結果是這樣的:

ID  | STORE | CITY | STATE | EMAIL 
------------------------------------------------------- 
user1 | store1a | city1a | state1a | email1 
user1 | store1a | city1a | state1a | email1 
user2 | store1b | city1b | state1b | email2 
user2 | store1b | city1b | state1b | email2 
user2 | store1b | city1b | state1b | email2 
user3 | store1c | city1c | state1c | email3 
user3 | store1c | city1c | state1c | email3 

正如你可以看到我查詢DB2,希望能夠顯示用戶擁有的所有商店中來自DB1的同一用戶的電子郵件。

這是在客戶的要求,所以他們可以聯繫有關他們的註冊使用這個HTML表。我以爲我會把它扔到那裏。 cusotmer只是問是否可能,它會有幫助。我只是覺得這聽起來像某人想要解決的問題,而我只是在嘗試內部連接或僅查詢兩個單獨的數據庫並嘗試使用變量後才感到好奇......無濟於事!

+2

這兩個數據庫在同一臺機器上嗎? –

+0

我查詢了兩個數據庫,並在「emailid [array]」中有第一個數據庫。現在我想要做以下事情...... 「我想從tb1回顯'email'到tb2的行結果的末尾,其中來自tb1的'email'與來自tb1的emailid [array]中的'username'和與我希望顯示爲上述表格樣本的tb2行結果中的'Vendor_ID'相同。「必須通過將「用戶名」與「Vendor_ID」進行匹配才能實現此目的,以便「電子郵件」在合適的供應商的行尾回顯。 – James

回答

0

這兩個數據庫都在同一臺服務器上嗎?數據庫的用戶名和密碼是否相同?

如果是這樣你應該能夠做這樣的事

SELECT * from databasename2NAME.db2 as t1 
LEFT JOIN datebasename1NAME.db1 as t2 
ON t1.id=t2.USER 
WHERE STATMENT HERE 

databasename2NAME,應該在數據庫

同爲DB1和表名替換爲DB2和在名爲.db2數據庫名稱替換

+0

它們位於同一服務器上,但密碼和用戶名不同。 – James

0

由於兩個數據庫有不同的密碼,我想你需要兩個單獨的查詢。這就是我試圖去做的。處理能力可能有點多。也許有人可以加快速度。

$link1 = mysqli_connect($hostname1, $username1, $password1, $database1); 
$query1 = "SELECT user,email FROM db1"; 
if ($result1 = mysqli_query($link1, $query1, MYSQLI_STORE_RESULT)) 
{ 
    while ($r1 = mysqli_fetch_array($result1, MYSQLI_ASSOC)) 
    { 
     $array[$r1['user']] = $r1['email']; 
    } 

    $link2 = mysqli_connect($hostname2, $username2, $password2, $database2); 
    foreach ($array as $u=>$e) 
    { 
     $query2 = "SELECT * FROM db2 WHERE id='{$u}'"; 
     if ($result2 = mysqli_query($link2, $query2, MYSQLI_STORE_RESULT)) 
     { 
      echo "<table>"; 
      while ($r2 = mysqli_fetch_array($result2, MYSQLI_ASSOC)) 
      { 
       echo "<tr>"; 
       echo "<td>{$u}</td>"; 
       echo "<td>{$r2['store']}</td>"; 
       echo "<td>{$r2['city']}</td>"; 
       echo "<td>{$r2['state']}</td>"; 
       echo "<td>{$e}</td>"; 
       echo "</tr>"; 
      } 
      echo "</table>"; 
     } 
    } 
    mysqli_close($link2); 
} 
mysqli_close($link1); 
+0

我正在閱讀你的回覆,並注意到你的電子郵件等於id,但是我需要'id'等於'db1'中的'user',所以我可以獲得'email'..對嗎?在db2中沒有'email'值。我錯過了什麼嗎? – James

+0

哦。我完全誤解了桌子。修正了我的帖子。你可能也想保留這個數組。我將該數組作爲關聯數組,以便您可以存儲用戶和電子郵件以與下一個數據庫相匹配。 – gtcharlie

相關問題