Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Memperkenalkan cara untuk melengkapkan pertanyaan bersama jadual dua pangkalan data pelayan berbeza dalam PHP

Memperkenalkan cara untuk melengkapkan pertanyaan bersama jadual dua pangkalan data pelayan berbeza dalam PHP

PHPz
PHPzasal
2023-04-06 09:14:411095semak imbas

Untuk pembangun yang menggunakan PHP, senario biasa ialah keperluan untuk bersama-sama menanyakan data daripada pangkalan data dua pelayan berbeza. Senario ini mungkin disebabkan oleh keperluan perniagaan atau kerana data diedarkan pada pelayan yang berbeza. Artikel ini akan memperkenalkan cara menyelesaikan operasi pertanyaan persekutuan data ini dalam PHP.

1. Tentukan data yang diperlukan untuk pertanyaan

Sebelum mula menulis kod, kita perlu menentukan data untuk ditanya. Katakan kita mempunyai dua perkhidmatan pangkalan data, bernama A dan B. Kami perlu bersama-sama menanyakan maklumat pelanggan daripada kedua-dua pangkalan data ini, termasuk ID pelanggan, nama, umur dan jantina. Kedua-dua pangkalan data A dan B mempunyai jadual pelanggan, iaitu customers_a dan customers_b masing-masing. Jadual ini termasuk maklumat asas tentang pelanggan.

Matlamat pertanyaan kami adalah untuk mendapatkan maklumat semua pelanggan dalam customers_a dan customers_b, jadi kami perlu melakukan operasi SERTAI pada dua jadual.

2. Sambungkan dua pangkalan data

Mudah untuk menyambungkan dua pangkalan data menggunakan PHP. Berikut ialah contoh kod untuk menyambung ke pangkalan data 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);
}

Begitu juga, kita boleh menyambung ke pangkalan data 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);
}

Sekarang kami telah berjaya menyambung ke dua pangkalan data yang berbeza.

3. Lakukan operasi pertanyaan bersama

Seterusnya, kami perlu melakukan operasi JOIN pada dua pangkalan data untuk mendapatkan data yang kami perlukan. Untuk memastikan kebolehbacaan dan kebolehselenggaraan kod, kami merangkum operasi pertanyaan ke dalam fungsi.

<?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;
}

Dalam fungsi ini, kami menggunakan operasi UNION untuk menggabungkan data dalam customers_a dan customers_b bersama-sama. Selepas melaksanakan pertanyaan, kami meletakkan rekod dalam set keputusan ke dalam tatasusunan dan mengembalikan tatasusunan.

4. Panggil fungsi pertanyaan

Sekarang kami telah menyelesaikan semua kerja pengekodan. Kita boleh memanggil fungsi get_customers dalam kod untuk mendapatkan maklumat pelanggan yang ditanya secara bersama daripada dua pangkalan data A dan B.

<?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>';
}

5. Contoh kod lengkap

Berikut ialah contoh kod lengkap:

<?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();
?>

Ringkasan

Dalam PHP, sambungkan dua It ialah senario yang sangat biasa untuk menggunakan pangkalan data yang berbeza dan melaksanakan operasi pertanyaan bersama. Artikel ini memperkenalkan cara menyambungkan dua perkhidmatan pangkalan data yang berbeza dalam PHP dan menggunakan operasi UNION untuk menyelesaikan tugasan pertanyaan bersama. Melalui artikel ini, kami berharap pembaca dapat lebih memahami cara menggunakan pelbagai perkhidmatan pangkalan data dalam PHP.

Atas ialah kandungan terperinci Memperkenalkan cara untuk melengkapkan pertanyaan bersama jadual dua pangkalan data pelayan berbeza dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn