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.
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.
Mudah untuk menyambungkan dua pangkalan data menggunakan PHP. Berikut ialah contoh kod untuk menyambung ke pangkalan data A:
<?php $host = 'localhost'; $username = 'db_user'; $password = 'db_password'; $dbname = 'database_a'; $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 = 'localhost'; $username = 'db_user'; $password = 'db_password'; $dbname = 'database_b'; $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.
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.
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['id'] . ' ' . $row['name'] . ' ' . $row['age'] . ' ' . $row['gender'] . '<br>'; }
Berikut ialah contoh kod lengkap:
<?php $host_a = 'localhost'; $username_a = 'db_user'; $password_a = 'db_password'; $dbname_a = 'database_a'; $host_b = 'localhost'; $username_b = 'db_user'; $password_b = 'db_password'; $dbname_b = 'database_b'; $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(); ?>
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!