sql >> Database teknologi >  >> RDS >> Mysql

Hvordan forbinder du til flere MySQL-databaser på en enkelt webside?

Advarsel: mysql_xx funktioner er forældet siden php 5.5 og fjernet siden php 7.0 (se http://php.net/ manual/intro.mysql.php ), brug mysqli_xx funktioner eller se svaret nedenfor fra @Troelskn

Du kan foretage flere opkald til mysql_connect() , men hvis parametrene er de samme, skal du angive true for '$new_link ' (fjerde) parameter, ellers genbruges den samme forbindelse. For eksempel:

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

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

For at forespørge database 1 skal du sende den første link-id:

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

og for database 2 videregive den anden:

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

Hvis du ikke sender et link-id, bruges den sidst oprettede forbindelse (i dette tilfælde den, der er repræsenteret ved $dbh2 ) f.eks.:

mysql_query('select * from tablename');

Andre muligheder

Hvis MySQL-brugeren har adgang til begge databaser, og de er på den samme vært (dvs. begge DB'er er tilgængelige fra den samme forbindelse), kan du:

  • Hold én forbindelse åben, og ring til mysql_select_db() at skifte imellem efter behov. Jeg er ikke sikker på, at dette er en ren løsning, og du kan ende med at forespørge på den forkerte database.
  • Angiv databasenavnet, når du refererer til tabeller i dine forespørgsler (f.eks. SELECT * FROM database2.tablename ). Dette vil sandsynligvis være en smerte at implementere.

Læs også troelskns svar, fordi det er en bedre tilgang, hvis du er i stand til at bruge PDO frem for de ældre udvidelser.



  1. Hvad er forskellen mellem postgres og postgresql_psycopg2 som en databasemotor til django?

  2. Åbn automatisk SQLite-forespørgselsresultater i Excel

  3. Hvordan opretter man Codeigniter sprogfiler fra databasen?

  4. Multitenancy-muligheder for PostgreSQL