sql >> Database >  >> RDS >> Mysql

Hoe maak je verbinding met meerdere MySQL-databases op één webpagina?

Waarschuwing: mysql_xx functies zijn verouderd sinds php 5.5 en verwijderd sinds php 7.0 (zie http://php.net/ manual/intro.mysql.php ), gebruik mysqli_xx functies of zie het antwoord hieronder van @Troelskn

U kunt meerdere oproepen doen naar mysql_connect() , maar als de parameters hetzelfde zijn, moet u waar doorgeven voor de '$new_link ' (vierde) parameter, anders wordt dezelfde verbinding hergebruikt. Bijvoorbeeld:

$dbh1 = mysql_connect($hostname, $username, $password); 
$dbh2 = mysql_connect($hostname, $username, $password, true); 

mysql_select_db('database1', $dbh1);
mysql_select_db('database2', $dbh2);

Geef vervolgens de eerste link-ID door om database 1 te doorzoeken:

mysql_query('select * from tablename', $dbh1);

en voor database 2 passeer de tweede:

mysql_query('select * from tablename', $dbh2);

Als u geen link-ID doorgeeft, wordt de laatst gemaakte verbinding gebruikt (in dit geval degene die wordt weergegeven door $dbh2 ) bijv.:

mysql_query('select * from tablename');

Andere opties

Als de MySQL-gebruiker toegang heeft tot beide databases en ze zich op dezelfde host bevinden (d.w.z. beide DB's zijn toegankelijk vanaf dezelfde verbinding), kunt u:

  • Houd één verbinding open en bel mysql_select_db() om tussen te wisselen als dat nodig is. Ik weet niet zeker of dit een schone oplossing is en je zou uiteindelijk de verkeerde database kunnen opvragen.
  • Geef de databasenaam op wanneer u naar tabellen in uw zoekopdrachten verwijst (bijv. SELECT * FROM database2.tablename ). Dit is waarschijnlijk lastig te implementeren.

Lees ook het antwoord van troelskn, want dat is een betere benadering als je PDO kunt gebruiken in plaats van de oudere extensies.



  1. Dynamisch draaien met datum als kolom

  2. Betekenis van Oracle's dump (systimestamp) bytes

  3. Fouten met gekoppelde servers ondervangen

  4. Top 7 banen die SQL vereisen