Bagaimana untuk Melaksanakan Pertanyaan Silang Pangkalan Data dalam PHP?

Mary-Kate Olsen
Lepaskan: 2024-11-15 07:04:02
asal
381 orang telah melayarinya

How to Perform Cross Database Queries in PHP?

Pertanyaan Silang Pangkalan Data dalam PHP

Dalam perbincangan sebelumnya, pertanyaan silang pangkalan data dalam MySQL telah ditangani. Walau bagaimanapun, apabila cuba melaksanakan pengetahuan ini dalam PHP, cabaran timbul.

Masalahnya:

PHP menawarkan dua pendekatan menggunakan mysql_select_db:

  1. Menggunakan mysql_select_db mengehadkan akses kepada satu pangkalan data pada satu masa.
  2. Mengabaikan mysql_select_db memerlukan penetapan pangkalan data dengan setiap pertanyaan, yang menyusahkan dan tidak praktikal.

Penyelesaian:

Untuk melakukan pertanyaan silang pangkalan data dalam PHP tanpa pengubahsuaian yang berlebihan, langkah berikut boleh diambil:

  1. Pastikan pangkalan data berada pada hos yang sama.
  2. Tetapkan sambungan ke pangkalan data pilihan menggunakan mysql_select_db.
  3. Tentukan pangkalan data asing secara manual dalam pertanyaan, seperti yang dilihat di bawah:
$db = mysql_connect($host, $user, $password);
mysql_select_db('my_most_used_db', $db);

$q = mysql_query("
    SELECT *
    FROM   table_on_default_db a, `another_db`.`table_on_another_db` b
    WHERE  a.id = b.fk_id
");
Salin selepas log masuk

Jika pangkalan data berada pada hos yang berbeza , penyertaan langsung tidak boleh dilakukan. Dalam kes itu, dua pertanyaan boleh dilakukan sebaliknya:

$db1 = mysql_connect($host1, $user1, $password1);
$db2 = mysql_connect($host2, $user2, $password2);

$q1 = mysql_query("
    SELECT id
    FROM   table
    WHERE  [..your criteria for db1 here..]
", $db1);
$tmp = array();
while($val = mysql_fetch_array($q1))
    $tmp[] = $val['id'];

$q2 = mysql_query("
    SELECT *
    FROM   table2
    WHERE  fk_id in (".implode(', ', $tmp).")
", $db2);
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pertanyaan Silang Pangkalan Data dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan