簡體   English   中英

如何在MySQL w / php中顯示來自兩個不同數據庫的數據

[英]How to display data from two different databases in MySQL w/php

我有一個客戶想要將我作為注冊用戶存儲在內容管理軟件的數據庫表中的電子郵件添加到另一個數據庫中,該數據庫由html生成,該數據庫是我創建的,用於存儲每個商店的所有數據。 一個注冊用戶可以擁有20家商店。 如何將該用戶的電子郵件從CMS數據庫連接到他們擁有的來自另一個數據庫的已注冊商店的html表輸出。

下圖希望用語言解釋難以解釋的內容。 對於他們擁有的每個商店,DB1中的“用戶”與DB2中的“ 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表聯系有關其注冊的信息。 我以為我會把它扔在那里。 管理員只是問是否有可能,會有所幫助。 我只是認為這聽起來像是某人希望解決的事情,在嘗試了內部聯接或只是查詢兩個單獨的數據庫並嘗試使用變量之后,我只是感到好奇……無濟於事!

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

如果是這樣,您應該可以執行以下操作

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

應該將databasename2NAME替換為db2的數據庫名稱,並將.db2替換為該數據庫中的表名稱

對於db1相同

由於兩個數據庫具有不同的密碼,我想您將需要兩個單獨的查詢。 這就是我要嘗試的方法。 處理能力可能會有點高。 也許有人可以加快速度。

$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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM