Puede realizar varias llamadas a mysql_connect()
, pero si los parámetros son los mismos, debe pasar el parámetro verdadero '$new_link
' (cuarto), de lo contrario se reutilizará 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);
continuación para consultar la base de datos 1 pasar el primer identificador de enlace:
mysql_query('select * from tablename', $dbh1);
y de la base de datos 2 Pase el segundo:
mysql_query('select * from tablename', $dbh2);
Si usted no pasa un enlace identificador luego se utiliza la última conexión creada (en este caso, la representada por $dbh2
) p. ej .:
mysql_query('select * from tablename');
Otras opciones
Si el usuario MySQL tiene acceso a ambas bases de datos y que están en el mismo host (es decir, tanto DBs son accesibles desde la misma conexión) usted podría:
- Mantener una conexión abierta y llamar
mysql_select_db()
para intercambiar entre si es 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 tablas en sus consultas (por ejemplo,
SELECT * FROM database2.tablename
). Es probable que sea un dolor implementarlo.
Lea también la respuesta de troelskn porque ese es un mejor enfoque si puede usar PDO en lugar de las extensiones anteriores.
que "verdadero" solo me ahorra horas de trabajo – PurplePilot
+1 Esta solución funcionó para mí. Después de dos días de depurar por qué mis plantillas personalizadas de WordPress estaban perdiendo acceso al objeto $ WP_Query después de una llamada a la segunda conexión de la base de datos ... –
es posible configurar una de ellas para que sea la predeterminada, y solo tiene que agregar ' $ dbh2' para el segundo solo cuando sea necesario? Tener que cambiar todas las consultas para que funcione este enfoque probablemente llevaría días encontrarlas todas ... – ThomasK