dos conexiones a tablas abiertas al mismo tiempo

Iniciado por OssoH, 16 Julio 2010, 17:50 PM

0 Miembros y 1 Visitante están viendo este tema.

OssoH

Hola a todos :
Quiero tener abiertas dos conexiones a 2 BD distintas alojadas en el mismo servidor (misma contraseña y usuario) de forma que en mi codigo PHP pueda consultar en una y actualizar en base a unos parámetros a otra.
Mi problema es que no consigo mantener estas dos conexiones abiertas al mismo tiempo porque por lo visto no se puede al ser el mismo servidor, usuario y contraseña.

Os pongo el código :

$conn1['user']       = "admin";
$conn1['password']   = "admin";
$conn1['db']         = "tienda1";
$conn1['server']     = "localhost";
$conn1['type']       = "mysql";

$conn1['link'] =  mysql_pconnect( $conn1['server'], $conn1['user'], $conn1['password']  ) or
die( 'Could not open connection to server' );

mysql_select_db( $conn1['db'], $conn1['link'] ) or
die( 'Imposible conectar con la base de datos '. $conn1['db'] );


$conn2['user']       = "admin";
$conn2['password']   = "admin";
$conn2['db']         = "tienda2";
$conn2['server']     = "localhost";
$conn2['type']       = "mysql";

$conn2['link'] =  mysql_pconnect( $conn2['server'], $conn2['user'], $conn2['password']  ) or
die( 'Could not open connection to server' );

mysql_select_db( $conn2['db'], $conn2['link'] ) or
die( 'Imposible conectar con la base de datos '. $conn2['db'] );


$sQuery = "INSERT INTO producto() VALUES ()";
$result = mysql_query($sQuery, $conn1['link'] );


Pues bien, como resultado sucede que hace un INSERT en la tabla producto de la BD tienda2 en lugar de la tienda1. Luego el indicarle en el insert que la conexión es con $conn1['link'] no hace ni caso.

¿Alguien sabe que puede estar sucediendo?
Necesito dos conexiones abiertas al mismo tiempo porque cómo he dicho voy a consultar constantemente en una BD y agregando a otra. Si lo hiciese cerrando y abriendo conexiones creo que no sería óptimo.
¿Que opináis?
Muchas gracias.



OssoH

solucionado!!!

Lo he solucionado indicando en el campo 'server' : localhost y en el otro 127.0.0.1

Shell Root

o.O, no creo que sea la mejor solución. Además tener 2 conexiones que son exactamente las mismas. Creo que deberías de trabajar con POO!

PD: Que pasaría si se necesitaran 3 tablas. 3 Conexion?... Pwn3d!
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Nakp

de hecho basta con seleccionar una base de datos distinta con la misma conexion no? xD
Ojo por ojo, y el mundo acabará ciego.

OssoH

en mi caso solo necesito dos conexiones. Lleva razon en el caso que necesitara 3 conexiones a la vez abiertas.
Con POO no veo que ventajas conseguiría porque tendría de todas formas estas dos conexiones abiertas.
Gracias por los consejos.

Shell Root

Sería así, maso menos.


Código (php) [Seleccionar]

function handler($sDataBase){
 $CNN['Usuario'] = 'root';
 $CNN['Password'] = 'root';
 $CNN['database'] = $sDataBase;
 $CNN['servidor'] = 'localhost';
 $CNN['Tipo'] = 'mysql';

 $CNN['Conexion']  = mysql_connect( $CNN['servidor'], $CNN['Usuario'], $CNN['Password']  ) or
die( 'Could not open connection to server' );
 mysql_select_db( $CNN['database'], $CNN['Conexion'] ) or die( 'Imposible conectar con la base de datos '. $conn1['db'] );

 return $CNN['Conexion'];
}



Y lo usarías así...
Código (php) [Seleccionar]
$sResult = mysql_query($sQuery, handler('tienda1') );
$sResult = mysql_query($sQuery, handler('tienda2') );


Notas la diferencia?
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

OssoH

la verdad es que se ahorra en código.
Desconocia la función 'handler'
Gracias

Shell Root

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

OssoH

upsss perdon, ahora termino de entenderla.
Solo me queda una duda, cada vez que llame a la función me crea una conexión nueva o mira a ver si ya estaba abierta la de antes y la reutiliza?.
Lo digo porque en ese caso tendría que cerrarla antes y despues abrirla y no creo que fuera muy óptimo estar abriendo siempre conexiones, por ese motivo la idea de dejarla abierta hasta que desee cerrarla.
Gracias de nuevo. Utilizaré tu función !! :)

Shell Root

Bueno, cuando trabajaba en ASPX.NET, tenia una función que verificaba si la conexión estaba abierta o cerrada y de allí realizaba las acciones correspondientes con la conexión. Intenta crearla.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.