0

我有一个客户想要将我作为注册用户存储在内容管理软件的数据库表中的电子邮件添加到来自另一个数据库的 html 生成的表中,该数据库是我为存储每个商店的所有数据而创建的。一个注册用户可以拥有二十家商店。如何将该用户的电子邮件从 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 表联系他们的注册。我以为我会把这个扔出去。客户只是询问是否可能,这是否会有所帮助。我只是觉得这听起来像是有人想解决的问题,我只是在尝试过内部联接或只是查询两个单独的数据库并尝试使用变量之后很好奇......无济于事!

4

2 回答 2

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);
于 2013-01-17T22:06:33.617 回答
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 相同

于 2013-01-17T21:57:35.357 回答