Bağlı DB değiştirme

3 Cevap php

Ben bazen, benim için çalışıyor çoğu zaman öyle değil ve ben neden bazen işe nasıl alabilirim / anlamaya olamaz, bu geri ve ileri gitmek gibi görünüyor, ve diğer zamanlarda böyle olmaz.

I have 5 databases, and need to grab data from each of them during a maintenance routine. For each of the databases, I have an external file which contains all the db connection code which I include in my page.

Içeren bu gibi bakmak

$SGcon = mysql_connect("localhost","root","");

if (!$SGcon)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("sGopen", $SGcon);

Her veritabanı için farklı bir varaible sağlamak, böylece bir sonraki veritabanı olacak

$PTcon = mysql_connect("localhost","root","");

if (!$PTcon)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("pTsecond", $PTcon);

Benim sorgu çağırmak Sonra, ben kullanmak

 
mysql_query($getQuery,  $PTcon);
mysql_query($secondQuery, $SGcon);

Ben çalıştırıyorum sorun ben sorgu için kullanılan doğru veritabanını almıyorum ki, benim komut son sayfaya eklenmiştir veritabanlarını kullanıyor görünüyor.

Bana veritabanı bağlantısı kullanılmak geçmek için daha iyi bir yolu var mı?

Orada başka verilere bir db verileri karşılaştırarak kulüpler olarak ileri ve geri veritabanları arasında çok, bu yüzden ben de bu verimli olmaya çalışıyorum.

Thanks Pete

3 Cevap

Varsa Varsayılan olarak, bir önceki çağrı olarak mysql_connect için aynı argümanları geçmek eğer yerine yenisini oluşturmak yerine, önbelleğe alınmış bir bağlantı dönersiniz. Yani her iki sorgular son mysql_select_db geçirilen hangisi veritabanı karşı yayınlanıyor.

Eğer makul mümkün olduğunca açık olarak birkaç tutmaya çalışmalısınız böylece veritabanı bağlantıları pahalı olmasına rağmen, new_link=true Bu davranışı önlemek olacaktır Passing.

New_link için ayrıntılı açıklama:

If a second call is made to mysql_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned. The new_link parameter modifies this behavior and makes mysql_connect() always open a new link, even if mysql_connect() was called before with the same parameters. In SQL safe mode, this parameter is ignored.

Ben her sorgu arasında db bağlantısını kapatmak eğer sorunu çözmek olacağını düşünüyorum.

Veritabanları arasında karşılaştıran bir sürü yapıyoruz ve eğer, o zaman ben sadece bir kez tüm veritabanlarını sorgulamak için 1 select ifadesi kullanmak istiyorum.

Belirli bir neden olmadıkça, mümkün olduğunca düşük db bağlantıları tutmak istiyorum. Ben bir bağlantıyı kullanın ve mysql_query () yönteminin işlevselliğini genişletmek için bir yöntem yazmak istiyorum. Bunu SQL dizesi geçebileceği ve tablo adı daha sonra fonksiyonu ($ tableName) mysql_select_db çağırır ve aynı bağlantı SQL işlemek için bu yeniden kullanır.