sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo se conecta a múltiples bases de datos MySQL en una sola página web?

Advertencia: mysql_xx las funciones están obsoletas desde php 5.5 y eliminadas desde php 7.0 (ver http://php.net/ manual/intro.mysql.php ), use mysqli_xx funciones o vea la respuesta a continuación de @Troelskn

Puede realizar varias llamadas a mysql_connect() , pero si los parámetros son los mismos, debe pasar verdadero para el '$new_link ' (cuarto) parámetro, de lo contrario se reutiliza la misma conexión. Por ejemplo:

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

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

Luego, para consultar la base de datos 1, pase el primer identificador de enlace:

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

y para la base de datos 2 pase el segundo:

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

Si no pasa un identificador de enlace, se utiliza la última conexión creada (en este caso, la representada por $dbh2) ) por ejemplo:

mysql_query('select * from tablename');

Otras opciones

Si el usuario de MySQL tiene acceso a ambas bases de datos y están en el mismo host (es decir, se puede acceder a ambas bases de datos desde la misma conexión), podría:

  • Mantenga una conexión abierta y llame a mysql_select_db() para intercambiar según sea necesario. No estoy seguro de que esta sea una solución limpia y podría terminar consultando la base de datos incorrecta.
  • Especifique el nombre de la base de datos cuando haga referencia a las tablas dentro de sus consultas (por ejemplo, SELECT * FROM database2.tablename ). Es probable que esto sea complicado de implementar.

Además, lea la respuesta de troelskn porque ese es un mejor enfoque si puede usar PDO en lugar de las extensiones anteriores.