Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie stellen Sie auf einer einzigen Webseite eine Verbindung zu mehreren MySQL-Datenbanken her?

Warnung: mysql_xx Funktionen sind seit PHP 5.5 veraltet und wurden seit PHP 7.0 entfernt (siehe http://php.net/ manual/intro.mysql.php ), verwenden Sie mysqli_xx Funktionen oder sehen Sie sich die Antwort unten von @Troelskn

an

Sie können mysql_connect() mehrfach aufrufen , aber wenn die Parameter gleich sind, müssen Sie für '$new_link true übergeben ' (vierter) Parameter, ansonsten wird dieselbe Verbindung wiederverwendet. Zum Beispiel:

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

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

Dann übergeben Sie an die Abfragedatenbank 1 die erste Link-ID:

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

und für Datenbank 2 übergeben Sie die zweite:

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

Wenn Sie keine Verbindungskennung übergeben, wird die zuletzt erstellte Verbindung verwendet (in diesem Fall diejenige, die durch $dbh2 repräsentiert wird ) z. B.:

mysql_query('select * from tablename');

Weitere Optionen

Wenn der MySQL-Benutzer Zugriff auf beide Datenbanken hat und sie sich auf demselben Host befinden (d. h. beide DBs sind über dieselbe Verbindung zugänglich), könnten Sie:

  • Halten Sie eine Verbindung offen und rufen Sie mysql_select_db() auf um bei Bedarf zu wechseln. Ich bin mir nicht sicher, ob dies eine saubere Lösung ist, und Sie könnten am Ende die falsche Datenbank abfragen.
  • Geben Sie den Datenbanknamen an, wenn Sie in Ihren Abfragen auf Tabellen verweisen (z. B. SELECT * FROM database2.tablename ). Dies ist wahrscheinlich schwierig zu implementieren.

Bitte lesen Sie auch die Antwort von troelskn, da dies ein besserer Ansatz ist, wenn Sie PDO anstelle der älteren Erweiterungen verwenden können.