PHP aynı anda 2 veritabanlarına bağlanmak için nasıl

5 Cevap php

Ben 1 PHP komut MySQL aynı örnek üzerinde 2 veritabanlarına bağlanmak için çalışıyorum.

Şu anda ben çözdüm tek yolu her biri için farklı bir kullanıcı ile hem veritabanlarına bağlanmak için.

Ben orijinal veritabanından veri kapma ve yeni bir takarak olduğum bir göç komut kullanıyorum, bu yüzden sonuçların büyük listeleri üzerinden döngü duyuyorum.

1 veritabanına bağlanmak ve sonra aynı kullanıcı ile ikinci bir bağlantı kurmaya çalışırken, sadece yenisine geçerli veritabanını değiştirir.

Diğer fikirler?

5 Cevap

Sen mysql_connect için isteğe bağlı dördüncü bağımsız değişken () gibi gerçek bir boolean geçmek gerekir. PHP's mysql_connect() documentation daha fazla bilgi için bkz.

Veritabanı kullanıcı hem de veritabanlarına erişim vardır ve onlar aynı sunucu üzerinde iseniz, bir bağlantı kullanıyorsanız ve sadece tablo adı önce çalışmak istediğiniz veritabanı belirtebilirsiniz. Örnek:

SELECT column
FROM database.table

Yapmanız gereken ne bağlı olarak, bir INSERT INTO yapmak ve işleme zaman bir demet kaydetmek mümkün olabilir.

INSERT INTO database1.table (column)
SELECT database2.table.column
FROM database2.table

Lucas doğru. Ben iki veritabanları aynı host üzerinde barındırılan varsayalım.

Alternatif olarak, sadece 1 db bağlantısı oluşturmak ve gerektiği gibi veritabanlarını takas tutabilirsiniz. İşte sözde kodudur.

$db_conn = connect_db(host, user, pwd);
mysql_select_db('existing_db', $db_conn);
 -- do selects and scrub data --
mysql_select_db('new_db', $db_conn);
-- insert the required data --

Ben iki bağlantı işleyicileri kullanarak öneririm

   $old = mysql_connect('old.database.com', 'user', 'pass);
   mysql_select_db('old_db', $old);


   $new = mysql_connect('new.database.com','user','pass);
   mysql_select_db('new_db', $new)

   // run select query on $old
   // run matching insert query on $new

Bu bir seçenek ise, PDO kullanın: istediğiniz gibi açık gibi birçok veritabanı bağlantıları olabilir.

Artı, sizin ve üzerinde aynı sorguları yürütme varsayarak, sen hazırlıklı ifadeleri kullanabilirsiniz.