sql >> Databasteknik >  >> RDS >> Mysql

Hur ansluter du till flera MySQL-databaser på en enda webbsida?

Varning: mysql_xx funktioner är utfasade sedan php 5.5 och borttagna sedan php 7.0 (se http://php.net/ manual/intro.mysql.php ), använd mysqli_xx funktioner eller se svaret nedan från @Troelskn

Du kan ringa flera anrop till mysql_connect() , men om parametrarna är desamma måste du ange true för '$new_link ' (fjärde) parametern, annars återanvänds samma anslutning. Till exempel:

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

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

För att sedan fråga databas 1 skickar du den första länkidentifieraren:

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

och för databas 2 passera den andra:

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

Om du inte skickar en länkidentifierare används den senast skapade anslutningen (i detta fall den som representeras av $dbh2 ) t.ex.:

mysql_query('select * from tablename');

Andra alternativ

Om MySQL-användaren har tillgång till båda databaserna och de finns på samma värd (dvs. båda DB:erna är tillgängliga från samma anslutning) kan du:

  • Håll en anslutning öppen och ring mysql_select_db() att byta mellan vid behov. Jag är inte säker på att detta är en ren lösning och det kan sluta med att du frågar fel databas.
  • Ange databasnamnet när du refererar till tabeller i dina frågor (t.ex. SELECT * FROM database2.tablename ). Detta är troligtvis jobbigt att implementera.

Läs också troelskns svar eftersom det är ett bättre tillvägagångssätt om du kan använda PDO snarare än de äldre tilläggen.



  1. Hur man väljer alla kolumner och ett antal(*) i samma fråga

  2. MongoDB Basics:Konfigurera rollbaserad åtkomstkontroll (RBAC)

  3. PostgreSQL datum och tid funktioner

  4. 10 anledningar till att ditt företag behöver Microsoft Access