Nasıl tek bir PHP sayfası birden veritabanlarına bağlanmak için?

5 Cevap php

Possible Duplicate:
How do you connect to multiple MySQL databases on a single webpage?

Ben bazı sorgu yapmak bir db bağlanmak ve daha sonra başka bir DB'den başka bir sorgu yapmak istiyorum. Ben bunu nasıl yaparım? Do Ben sadece

 mysql_pconnect("host:3306", "user", "password") or die(mysql_error());
 mysql_select_db("Test") or die(mysql_error());

//do some query

 mysql_pconnect("host2:3306", "user", "password") or die(mysql_error());
 mysql_select_db("Test") or die(mysql_error());

//do another query

Olduğunu bunu nasıl? Sorular bir çift. Ben pconnect kullandığımızı fark, yani aynı sayfada iki kez çağırarak etkiler? Ayrıca, ikinci birini çağırmadan önce ilki için bağlantıyı kapatmak zorundayım?

5 Cevap

Sen ayrı bir değişken veritabanı bağlantı link saklamak gerekir. Örneğin

 $connection_1 = mysql_connect("host:3306", "user", "password") or die(mysql_error());
 mysql_select_db("Test", $connection_1) or die(mysql_error());

 $connection_2 = mysql_pconnect("host2:3306", "user", "password") or die(mysql_error());
 mysql_select_db("Test", $connection_2) or die(mysql_error());

 mysql_query("your query", $connection_1); // run query for first connection
 mysql_query("your query", $connection_2); // run query for second connection

Sen kaynak mysql_connect döndü depolamak ve mysql_select_db yaparken kullanmak gerekir.

$res1 = mysql_pconnect(...);
mysql_select_db("Test", $res1);

$res2 = mysql_pconnect(...);
mysql_select_db("Test", $res2);

Gelen db sorgularken sonra $ res1 veya $ res2 kullanın.

mysql_query("select * from test_table", $res1);

mysql_query("select * from test_table", $res2);

Olduğunu bunu nasıl?

Bitene kadar bu farklı bilgisayarlar için iki açık bağlantı ile komut bırakacaktır.

Sen mysql_pconnect tekrar arayarak bu bağlantıların birini yeniden olabilir.

I pconnect, yani aynı sayfada iki kez çağırarak etkiler kullanılan fark?

Kimden docs :

Işlev ilk zaten açık with the same host, username and password olan bir (kalıcı) bir bağlantı bulmaya çalışacaktı

Bilgisayarlarınızın farklı olduğundan, iki farklı bağlantı olacak

Ayrıca, ikinci birini çağırmadan önce ilki için bağlantıyı kapatmak zorundayım?

Açıkça mysql_pconnect ile açık bir bağlantısı kapatamazsınız.

Eğer $link_identifier kullanarak değil çünkü, sağ, RTFM mi?

http://us.php.net/mysql_select_db:

bool mysql_select_db ( string $database_name [, resource $link_identifier ] )

Belirtilen link tanımlayıcı ile ilişkili sunucuda geçerli etkin veritabanı ayarlar. Mysql_query sonraki her çağrısı () aktif veritabanı üzerinde yapılacaktır.

Parametreler

database_name The name of the database that is to be selected.

link_identifier MySQL bağlantısı.

Link tanımlayıcı belirtilmemişse mysql_connect tarafından açılan son bağlantı () varsayılır. Böyle bir bağlantı bulunursa, mysql_connect () argüman hiçbir ile çağrılmış gibi bir bağlantı oluşturmaya çalışacağız. Hiçbir bağlantı veya kurulmuş ise, bir e_warning seviyesinde bir hata üretilir.

Eğer pconnect kullanmak zorunda zaman, sen (diğer sayfaları ile belki sayfa içinde değil, sadece) bağlantı paylaşımı konum - burada durumunda, bunu yapma. Sen izole bağlantıları, bu nedenle izole işlemleri istiyorum. Muhtemelen new_link parametresini kullanarak mysql_connect yerine, ve açıkça düşünmelisiniz. Son olarak, açıkça $link_identifier kullanmak, bu yüzden size bağlanırken ne açıktır.