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

Come ci si connette a più database MySQL su una singola pagina web?

Avviso : mysql_xx le funzioni sono deprecate da php 5.5 e rimosse da php 7.0 (vedi http://php.net/ manual/intro.mysql.php ), usa mysqli_xx funzioni o vedere la risposta di seguito da @Troelskn

Puoi effettuare più chiamate a mysql_connect() , ma se i parametri sono gli stessi devi passare true per '$new_link ' (quarto) parametro, altrimenti viene riutilizzata la stessa connessione. Ad esempio:

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

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

Quindi per interrogare il database 1 passare il primo identificatore di collegamento:

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

e per il database 2 passare il secondo:

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

Se non si passa un identificatore di collegamento viene utilizzata l'ultima connessione creata (in questo caso quella rappresentata da $dbh2 ) es.:

mysql_query('select * from tablename');

Altre opzioni

Se l'utente MySQL ha accesso a entrambi i database e si trovano sullo stesso host (ovvero entrambi i DB sono accessibili dalla stessa connessione), potresti:

  • Mantieni aperta una connessione e chiama mysql_select_db() scambiare tra se necessario. Non sono sicuro che questa sia una soluzione pulita e potresti finire per interrogare il database sbagliato.
  • Specifica il nome del database quando fai riferimento alle tabelle all'interno delle tue query (ad es. SELECT * FROM database2.tablename ). È probabile che sia difficile da implementare.

Inoltre, leggi la risposta di troelskn perché è un approccio migliore se sei in grado di utilizzare PDO anziché le estensioni precedenti.