Foros del Web » Programando para Internet » PHP »

"2" Conexiones a base de datos Mysql

Estas en el tema de "2" Conexiones a base de datos Mysql en el foro de PHP en Foros del Web. Buenos días, me gustaría conectar, mediante php, a dos bases de datos mysql distintas. Para conectarme a 1 lo que hago es lo siguiente: Código ...
  #1 (permalink)  
Antiguo 17/12/2008, 03:59
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
"2" Conexiones a base de datos Mysql

Buenos días,
me gustaría conectar, mediante php, a dos bases de datos mysql distintas. Para conectarme a 1 lo que hago es lo siguiente:

Código PHP:
<?php
//Primera conexion
$nombre_bd_1="bd_1";
$host_bd_1="localhost";
$user_bd_1="usuario";
$pass_bd_1="pass";

$conexion_1=@mysql_connect($host_bd_1,$user_bd_1,$pass_bd_1);

mysql_select_db($nombre_bd_1,$conexion_1);


//Segunda conexion
$nombre_bd_2="bd_2";
$host_bd_2="localhost";
$user_bd_2="usuario";
$pass_bd_2="pass";

$conexion_2=@mysql_connect($host_bd_2,$user_bd_2,$pass_bd_2);

mysql_select_db($nombre_bd_2,$conexion_2);
Lo extraño es que cuando utilizo los mysql_query, por ejemplo:

Código PHP:
$sql="SELECT * FROM table;";
$query=mysql_query($sql,$conexion_1);
....
....
$insert="INSERT INTO table_otra ....;";
mysql_query($insert,$conexion_2); 
Me hace en la misma base de datos el select i el insert (en la de conexion_1).
Como puedo hacer para que funcione la conexion_2 ??

Gracias.
Saludos.
  #2 (permalink)  
Antiguo 17/12/2008, 05:37
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Respuesta: "2" Conexiones a base de datos Mysql

Quita la @ y comprueba que $conexion_2 no es false, es decir, que se conecte al segundo servidor. Basicamente si el mysql_connect a la segunda conexion falla, lo mas seguro que al ser conexion_2 false PHP lo tome igual que si no pasas un id de conexion.
  #3 (permalink)  
Antiguo 17/12/2008, 06:08
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: "2" Conexiones a base de datos Mysql

Con el @, una sola conexión me funciona. La conexion 2 me devuelve TRUE ya que tengo la siguiente línia:

Código PHP:
if($conexion_2=@mysql_connect($host_bd_2,$user_bd_2,$pass_bd_2); ).... 
... hago una comprobación de la conexión 1 y la conexión 2, lo curioso o el error es que en :

Código PHP:
$sql="SELECT * FROM table;"
$query=mysql_query($sql,$conexion_1); 
.... 
.... 
$insert="INSERT INTO table_otra ....;"
mysql_query($insert,$conexion_2); 
le da igual el $conexion que use ... parece ser que coge el $conexion_1.
  #4 (permalink)  
Antiguo 17/12/2008, 06:13
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Respuesta: "2" Conexiones a base de datos Mysql

Una pregunta, ¿estas intentando conectar 2 veces al mismo servidor con el mismo usuario? Si es asi, el "problema" es que mysql_connect por defecto no te crea una nueva conexion si es con los mismos datos que la anterior. Tienes que forzarla pasando el parametro newlink en el mysql_connect
  #5 (permalink)  
Antiguo 17/12/2008, 06:37
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: "2" Conexiones a base de datos Mysql

Cita:
Iniciado por DarkJ Ver Mensaje
Una pregunta, ¿estas intentando conectar 2 veces al mismo servidor con el mismo usuario? Si es asi, el "problema" es que mysql_connect por defecto no te crea una nueva conexion si es con los mismos datos que la anterior. Tienes que forzarla pasando el parametro newlink en el mysql_connect

Sí aquí está el problema, ya ví algo sobre esto, es lo que no sé solucionar.
  #6 (permalink)  
Antiguo 17/12/2008, 11:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: "2" Conexiones a base de datos Mysql

Como te dice DarkJ, tienes que pasarle el parametro true, al final de tu mysql_connect, revisa el Manual de PHP, es el último parámetro.

Aunque te recomiendo en lugar de hacer eso uses mysql_select_db para cambiar la base de datos.

Saludos.
  #7 (permalink)  
Antiguo 18/12/2008, 14:25
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: "2" Conexiones a base de datos Mysql

Cita:
Iniciado por GatorV Ver Mensaje
Como te dice DarkJ, tienes que pasarle el parametro true, al final de tu mysql_connect, revisa el Manual de PHP, es el último parámetro.

Aunque te recomiendo en lugar de hacer eso uses mysql_select_db para cambiar la base de datos.

Saludos.

Sí lo puse a TRUE eso también lo probé pero no funcionó. Y ya estoy utilizando "mysql_select_db", fíjate en ele ejemplo de arriba:

Código PHP:
$conexion_1=@mysql_connect($host_bd_1,$user_bd_1,$pass_bd_1); 

mysql_select_db($nombre_bd_1,$conexion_1); 
  #8 (permalink)  
Antiguo 18/12/2008, 14:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: "2" Conexiones a base de datos Mysql

Me refiero a usarlo "antes" de enviar el segundo query.

Saludos.
  #9 (permalink)  
Antiguo 18/12/2008, 14:28
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: "2" Conexiones a base de datos Mysql

Se refiere a hacer 1 mysql_select_db, hacer el 1er query, luego otro mysql_select_db, hacer el 2do query.
  #10 (permalink)  
Antiguo 19/12/2008, 09:25
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: "2" Conexiones a base de datos Mysql

El problema es que hago un bucle para hacer el insert, es decir, seleccionar de una base de datos e insertar a otra, entonces, el rendimiento será el correcto hacer una conexión a la base de datos para cada pasada del bucle ?

Bueno hacerlo lo hace bién, Gracias.
  #11 (permalink)  
Antiguo 19/12/2008, 09:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: "2" Conexiones a base de datos Mysql

Pues no obviamente por eso es mejor usar mysql_select_db a estar conectando en cada vuelta del bucle.

Saludos.
  #12 (permalink)  
Antiguo 19/12/2008, 10:26
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: "2" Conexiones a base de datos Mysql

Utilizar solo el mysql_select_db dentro del bucle y lo que seria el mysql_conect al inicio entonces no ?
  #13 (permalink)  
Antiguo 19/12/2008, 10:29
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: "2" Conexiones a base de datos Mysql

Sino crea otro usuario en tu base de datos.
  #14 (permalink)  
Antiguo 19/12/2008, 10:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: "2" Conexiones a base de datos Mysql

Asi es.

Saludos.
  #15 (permalink)  
Antiguo 19/12/2008, 10:32
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: "2" Conexiones a base de datos Mysql

Cita:
Iniciado por Ronruby Ver Mensaje
Sino crea otro usuario en tu base de datos.
Bueno eso lo pensé pero en este caso no puedo hacerlo jeje.
  #16 (permalink)  
Antiguo 19/12/2008, 14:38
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Respuesta: "2" Conexiones a base de datos Mysql

Intentaste usando mysqli_connect?

Código PHP:
 $dbhost="localhost"
 
$dbusuario="user"
 
$dbpassword="pass"
 
$puerto 3306;

 
 
$db="db1"
 
$conn1 mysqli_connect($dbhost,$dbusuario,$dbpassword,$db,$puerto) or trigger_error(mysqli_error($conn1),E_USER_ERROR);
 

 
$db="db2"
 
$conn2 mysqli_connect($dbhost,$dbusuario,$dbpassword,$db,$puerto) or trigger_error(mysqli_error($conn2),E_USER_ERROR); 
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #17 (permalink)  
Antiguo 22/01/2009, 11:37
 
Fecha de Ingreso: enero-2008
Mensajes: 5
Antigüedad: 16 años, 3 meses
Puntos: 0
Aqui tengo otra solucion

Hola , aqui pongo una posible solucion.
les ecplico,

yo tengo N base de datos, pero los nombre de base de datos los pongo en un archivo
base.txt cuyo contenigo es :

bd1
bd2
bd3

y para llamar a cada base de datos, el cual tiene una tabla ¿ en todas de mismas caractreristicas pero diferente contenido ? hago un bucle :
Código:
$vlineas = file("bases_prueba.txt");
$i=0;
 

  $link=mysql_connect("localhost","root","vertrigo"); 
    // Podemos mostrar / trabajar con todas las líneas:
    foreach ($vlineas as $sLinea)
       { 
	   echo "$i -- >".$sLinea."<br>";

                      // ponemos en un arreglo los nombres de base de datos
			$array = split(",", $vlineas[$i]);	
			$bdnombre		=$array[0];
 		 
                      // hacemos la coneccion 
        	       mysql_select_db($bdnombre,$link);
			 
			$sql = "Select nombre from seccion";
			$result = mysql_query($sql,$link);
			
			list ($nombre) = mysql_fetch_array($result);
			echo "dato : ".$nombre;
			
			mysql_free_result($result);
		 
 	
	 
		$sLinea = $vlineas[$i]; 
		echo $sLinea;

			echo "<br>--------------------<br>";   
			$i++;
			
		}
Aqui me aparece los datos de cada tabla de cada diferente base de datos...

espero k les ayude en algo :D ya que este foro me a ayudado mucho y este es mi pequeño aporte

Saludos
  #18 (permalink)  
Antiguo 11/02/2010, 13:52
 
Fecha de Ingreso: febrero-2010
Mensajes: 6
Antigüedad: 14 años, 2 meses
Puntos: 0
De acuerdo Respuesta: "2" Conexiones a base de datos Mysql

y como seria el codigo del txt nombrando las tres base de datos?

gracias!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:58.