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.
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 jeweilscustomers_a
undcustomers_b
sind. Diese Tabellen enthalten grundlegende Informationen über Kunden.customers_a
和customers_b
。这些表都包括客户的基本信息。
我们的查询目标是获取customers_a
和customers_b
中所有客户的信息,因此我们需要在两个表上执行JOIN操作。
使用PHP连接两个数据库很容易。下面是连接A数据库的代码示例:
connect_error) { die('Connect Error (' . $db_a->connect_errno . ') ' . $db_a->connect_error); }
同样地,我们可以连接B数据库:
connect_error) { die('Connect Error (' . $db_b->connect_errno . ') ' . $db_b->connect_error); }
现在我们已经成功连接到了两个不同的数据库。
接下来,我们需要在两个数据库上执行JOIN操作,获取我们需要的数据。为了保证代码的可读性和易维护性,我们将查询操作封装成一个函数。
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_a
和customers_b
中的数据合并在一起。执行完查询之后,我们将结果集中的记录放到一个数组中,并返回该数组。
现在我们已经完成了所有的代码编写工作。我们可以在代码中调用get_customers
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:
'; }
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'] . '
'; } $db_a->close(); $db_b->close(); ?>
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 aufJetzt 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. rrreee5. Vollständiges CodebeispielDas Folgende ist ein vollständiges Codebeispiel:rrreeeZusammenfassungIn 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!