如何用/ php显示MySQL中两个不同数据库的数据

时间:2013-01-17 21:49:05

标签: php mysql database

我有一个客户希望将我存储在内容管理软件的数据库表中的电子邮件作为注册用户添加到我创建的另一个数据库的html生成的表中,以存储每个商店的所有数据。一个注册用户可能有二十个商店。如何将该用户的电子邮件从CMS数据库连接到他们拥有的来自其他数据库的已注册商店的html表输出。

下图说明了用词语难以解释的内容。 DB1中的“User”与他们拥有的每个商店的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表联系他们的注册。我以为我会把它扔出去。 cusotmer只询问它是否可能,它会有所帮助。我只是觉得这听起来像是有人想要解决的问题,我只是在尝试内部联接或只是查询两个独立的数据库并试图使用变量之后感到好奇......无济于事!

2 个答案:

答案 0 :(得分:0)

两个数据库是否在同一台服务器上?数据库的用户名和密码是否相同?

如果是这样,你应该可以做这样的事情

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

databasename2NAME应替换为db2的数据库名称,并用该数据库中的表名替换.db2

对于db1

答案 1 :(得分: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);