Foros del Web » Programando para Internet » PHP »

PHP OO redeclarar conexion a mysql

Estas en el tema de redeclarar conexion a mysql en el foro de PHP en Foros del Web. Hola amigos, tengo un problema, el planteamiento de mi web es el siguiente. Trabajo con 2 base de datos. La primera BASE-A tiene un listado ...
  #1 (permalink)  
Antiguo 07/08/2011, 09:37
Avatar de yubertvikel
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: Venezuela
Mensajes: 928
Antigüedad: 15 años, 5 meses
Puntos: 111
redeclarar conexion a mysql

Hola amigos, tengo un problema, el planteamiento de mi web es el siguiente.

Trabajo con 2 base de datos.

La primera BASE-A tiene un listado de los dominios para una estructura, en el caso de que el nombre del servidor esté en esta base de datos, la misma tiene la información de esta estructura.

La segunda BASE-B si el dominio no se encuentra registrado, mostrará una estructura standar que ha de depender de la localización del dominio.

El problema es el siguiente,

el algoritmo hace una carga de BASE-A

if (!($link=mysql_connect("conexion", "basededatos", "contraseña")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db('basededatos',$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;

Una vez hecho la carga, se comprueba que el dominio existe.

si existe, se mantiene la conexion en BASE-A

if no existe, se cierra la conexión y se busca información en BASE-B

el algoritmo hace una carga de BASE-B

if (!($link=mysql_connect("conexion", "basededatosB", "contraseña")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db('basededatosB',$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;

el problema es que la conexión no se puede redeclarar y me está cantando el error Cannot redeclare conectarse() (previously declared in, hay alguna función para reiniciar mysql_connect?
__________________
Buscas posicionamiento en Google con Linneo.net encuentras soluciones SEO, SEM y de Marketing para empresas en Santiago
  #2 (permalink)  
Antiguo 07/08/2011, 09:43
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: redeclarar conexion a mysql

el error indica que existe una redeclaración de la función conectarse(), no que no se pueda conectar a 2 bases de datos, lo cual es simple:

$link=mysql_connect("server", "basededatos", "contraseña");
mysql_select_db('basededatosA',$link);
$link2=mysql_connect("server", "basededatos", "contraseña");
mysql_select_db('basededatosB',$link2);

¿donde está la función conectarse()?
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 07/08/2011, 09:47
Avatar de yubertvikel
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: Venezuela
Mensajes: 928
Antigüedad: 15 años, 5 meses
Puntos: 111
Respuesta: redeclarar conexion a mysql

la conexión se hace en ambos casos posterior a un include.

tenemos

include conexión-BASE-A
$link=conectarse();
comprobación

if existe
trabajo con base A

si no existe
mysql_close($link); //para cerrar conexion con BASE-A

trabajo con BASE-B
include conexión-BASE-B
$link=conectarse();

mysql_close($link);
__________________
Buscas posicionamiento en Google con Linneo.net encuentras soluciones SEO, SEM y de Marketing para empresas en Santiago
  #4 (permalink)  
Antiguo 07/08/2011, 09:50
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: redeclarar conexion a mysql

¿para que re-incluyes si una vez aplicado include tienes acceso a todas las declaraciones del archivo incluido?

puede darse el caso de concurrencia debido a la estructura de includes de tu sistema, o layout puede ser, para evitar eso utiliza include_once()
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 07/08/2011, 09:54
Avatar de yubertvikel
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: Venezuela
Mensajes: 928
Antigüedad: 15 años, 5 meses
Puntos: 111
Respuesta: redeclarar conexion a mysql

ya le he intentado con similares resultados.

el include se está haciendo en archivos diferentes e incluso hago cambios en la variable de la conexión.

if (!($link=mysql_connect("conexion", "basededatos", "contraseña")))

el primer include hace conexion en $link y el segundo lo hace en $linka.

el problema es al declarar la conexión con la base de datos, al parecer se mantiene incluso despues del mysql_close($link);

y no puedo hacer otra declaración ni colocándola sin include
__________________
Buscas posicionamiento en Google con Linneo.net encuentras soluciones SEO, SEM y de Marketing para empresas en Santiago
  #6 (permalink)  
Antiguo 07/08/2011, 09:57
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: redeclarar conexion a mysql

usa include_once() o require_once(), en todos los niveles en donde se hagan include a dicho archivo
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #7 (permalink)  
Antiguo 07/08/2011, 09:58
Avatar de yubertvikel
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: Venezuela
Mensajes: 928
Antigüedad: 15 años, 5 meses
Puntos: 111
Respuesta: redeclarar conexion a mysql

ya conseguí, estoy cambiando las variables, pero no estoy cambiando el nombre de la función en ambos includes, muchísimas gracias, le cambié el llamado de la función y los nombres en de función en los diferentes archivos

$link=conectarse-A();

y

$link=conectarse-B();
__________________
Buscas posicionamiento en Google con Linneo.net encuentras soluciones SEO, SEM y de Marketing para empresas en Santiago

Etiquetas: mysql, redeclarar
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 22:33.