Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die Durchführung einer gemeinsamen Tabellenabfrage zweier verschiedener Serverdatenbanken in PHP

Einführung in die Durchführung einer gemeinsamen Tabellenabfrage zweier verschiedener Serverdatenbanken in PHP

PHPz
PHPzOriginal
2023-04-06 09:14:411245Durchsuche

Für Entwickler, die PHP verwenden, besteht ein häufiges Szenario darin, dass sie gemeinsam Daten aus den Datenbanken zweier verschiedener Server abfragen müssen. Dieses Szenario kann auf geschäftliche Anforderungen zurückzuführen sein oder darauf, dass die Daten auf verschiedene Server verteilt sind. In diesem Artikel wird erläutert, wie dieser Datenföderations-Abfragevorgang in PHP abgeschlossen wird.

1. Bestimmen Sie die für die Abfrage erforderlichen Daten

Bevor wir mit dem Schreiben von Code beginnen, müssen wir die Daten bestimmen, die wir abfragen möchten. Angenommen, wir haben zwei Datenbankdienste mit den Namen A und B. Wir müssen gemeinsam Kundeninformationen aus diesen beiden Datenbanken abfragen, einschließlich Kunden-ID, Name, Alter und Geschlecht. Beide Datenbanken A und B verfügen über Kundentabellen, die jeweils customers_a und customers_b sind. Diese Tabellen enthalten grundlegende Informationen über Kunden. customers_acustomers_b。这些表都包括客户的基本信息。

我们的查询目标是获取customers_acustomers_b中所有客户的信息,因此我们需要在两个表上执行JOIN操作。

2. 连接两个数据库

使用PHP连接两个数据库很容易。下面是连接A数据库的代码示例:

<?php
$host = &#39;localhost&#39;;
$username = &#39;db_user&#39;;
$password = &#39;db_password&#39;;
$dbname = &#39;database_a&#39;;

$db_a = new mysqli($host, $username, $password, $dbname);
if ($db_a->connect_error) {
    die('Connect Error (' . $db_a->connect_errno . ') '
            . $db_a->connect_error);
}

同样地,我们可以连接B数据库:

<?php
$host = &#39;localhost&#39;;
$username = &#39;db_user&#39;;
$password = &#39;db_password&#39;;
$dbname = &#39;database_b&#39;;

$db_b = new mysqli($host, $username, $password, $dbname);
if ($db_b->connect_error) {
    die('Connect Error (' . $db_b->connect_errno . ') '
            . $db_b->connect_error);
}

现在我们已经成功连接到了两个不同的数据库。

3. 执行联合查询操作

接下来,我们需要在两个数据库上执行JOIN操作,获取我们需要的数据。为了保证代码的可读性和易维护性,我们将查询操作封装成一个函数。

<?php
function get_customers($db_a, $db_b) {
    $sql = "SELECT id, name, age, gender FROM customers_a
            UNION
            SELECT id, name, age, gender FROM customers_b";
    $result = $db_a->query($sql);
    if (!$result) {
        die('Query Error: ' . $db_a->error);
    }
    $rows = array();
    while ($row = $result->fetch_assoc()) {
        $rows[] = $row;
    }
    $result->free();

    return $rows;
}

在这个函数中,我们使用了UNION操作,将customers_acustomers_b中的数据合并在一起。执行完查询之后,我们将结果集中的记录放到一个数组中,并返回该数组。

4. 调用查询函数

现在我们已经完成了所有的代码编写工作。我们可以在代码中调用get_customers

Unser Abfrageziel besteht darin, die Informationen aller Kunden in customers_a und customers_b zu erhalten, daher müssen wir JOIN-Operationen für die beiden Tabellen ausführen.

2. Zwei Datenbanken verbinden

Es ist einfach, zwei Datenbanken mit PHP zu verbinden. Hier ist ein Codebeispiel für die Verbindung mit Datenbank A:

<?php
$rows = get_customers($db_a, $db_b);
foreach ($rows as $row) {
    echo $row[&#39;id&#39;] . &#39; &#39; . $row[&#39;name&#39;] . &#39; &#39; . $row[&#39;age&#39;] . &#39; &#39; . $row[&#39;gender&#39;] . &#39;<br>';
}

Ähnlich können wir eine Verbindung mit Datenbank B herstellen:

<?php
$host_a = &#39;localhost&#39;;
$username_a = &#39;db_user&#39;;
$password_a = &#39;db_password&#39;;
$dbname_a = &#39;database_a&#39;;

$host_b = &#39;localhost&#39;;
$username_b = &#39;db_user&#39;;
$password_b = &#39;db_password&#39;;
$dbname_b = &#39;database_b&#39;;

$db_a = new mysqli($host_a, $username_a, $password_a, $dbname_a);
if ($db_a->connect_error) {
    die('Connect Error (' . $db_a->connect_errno . ') '
            . $db_a->connect_error);
}

$db_b = new mysqli($host_b, $username_b, $password_b, $dbname_b);
if ($db_b->connect_error) {
    die('Connect Error (' . $db_b->connect_errno . ') '
            . $db_b->connect_error);
}

function get_customers($db_a, $db_b) {
    $sql = "SELECT id, name, age, gender FROM customers_a
            UNION
            SELECT id, name, age, gender FROM customers_b";
    $result = $db_a->query($sql);
    if (!$result) {
        die('Query Error: ' . $db_a->error);
    }
    $rows = array();
    while ($row = $result->fetch_assoc()) {
        $rows[] = $row;
    }
    $result->free();

    return $rows;
}

$rows = get_customers($db_a, $db_b);
foreach ($rows as $row) {
    echo $row['id'] . ' ' . $row['name'] . ' ' . $row['age'] . ' ' . $row['gender'] . '<br>';
}

$db_a->close();
$db_b->close();
?>
Jetzt haben wir erfolgreich eine Verbindung zu zwei verschiedenen Datenbanken hergestellt. 🎜🎜3. Führen Sie eine gemeinsame Abfrageoperation durch🎜🎜Als nächstes müssen wir eine JOIN-Operation für die beiden Datenbanken durchführen, um die benötigten Daten zu erhalten. Um die Lesbarkeit und Wartbarkeit des Codes sicherzustellen, kapseln wir die Abfrageoperation in eine Funktion. 🎜rrreee🎜In dieser Funktion verwenden wir die UNION-Operation, um die Daten in customers_a und customers_b zusammenzuführen. Nachdem wir die Abfrage ausgeführt haben, fügen wir die Datensätze in der Ergebnismenge in ein Array ein und geben das Array zurück. 🎜🎜4. Rufen Sie die Abfragefunktion auf🎜🎜Jetzt haben wir alle Codierungsarbeiten abgeschlossen. Wir können die Funktion get_customers im Code aufrufen, um die gemeinsam abgefragten Kundeninformationen aus den beiden Datenbanken A und B zu erhalten. 🎜rrreee🎜5. Vollständiges Codebeispiel🎜🎜Das Folgende ist ein vollständiges Codebeispiel:🎜rrreee🎜Zusammenfassung🎜🎜In PHP ist das Verbinden zweier verschiedener Datenbanken und das Durchführen von Union-Abfrageoperationen ein sehr häufiges Szenario. In diesem Artikel wird beschrieben, wie Sie zwei verschiedene Datenbankdienste in PHP verbinden und die UNION-Operation verwenden, um die gemeinsame Abfrageaufgabe abzuschließen. Wir hoffen, dass die Leser durch diesen Artikel besser verstehen, wie sie mehrere Datenbankdienste in PHP verwenden. 🎜

Das obige ist der detaillierte Inhalt vonEinführung in die Durchführung einer gemeinsamen Tabellenabfrage zweier verschiedener Serverdatenbanken in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn