Foros del Web » Creando para Internet » Diseño web »

Conexiones MySQL

Estas en el tema de Conexiones MySQL en el foro de Diseño web en Foros del Web. Tengo un sistema en PHP y tengp un archivo llamado funciones.php en el que estan almacenada la mayoria de las funcione que uso en todo ...
  #1 (permalink)  
Antiguo 28/11/2008, 13:36
 
Fecha de Ingreso: junio-2007
Mensajes: 18
Antigüedad: 16 años, 10 meses
Puntos: 0
Conexiones MySQL

Tengo un sistema en PHP y tengp un archivo llamado funciones.php en el que estan almacenada la mayoria de las funcione que uso en todo el sitio. La mayoría de las funciones realizan una conexion a la base de datos y en cada funcion creo una conexion nueva, es decir, todas las funciones que se conectan a la base de datos tienen mas o menos esta forma:

function getVariable($var){
$cnx = mysql_connect('localhost', DB_USER, DB_PASS);
mysql_select_db(DB_NAME, $cnx);

$sqlbusca = "SELECT valor FROM configuracion WHERE variable = '".$var."'";
$variable = mysql_query($sqlbusca, $cnx) or die(mysql_error());
mysql_close($cnx);
$datos = mysql_fetch_array($variable);
$valor = $datos["valor"];
mysql_free_result($variable);
return $valor;
}


Lo que me gustaría saber es si la forma en que estoy manejando las conexiones es la correcta, se que existen las conexiones persistentes pero no tengo muy claro cual es la diferencia, o si existe una mejor forma de manejar las conexiones que sea más rápida, además, como se puede ver, no estoy cerrando la conexión, en teoría esto no debería afectar puesto que no son persistentes, pero me queda la duda.

¿Alguien me puede decir si es correcto lo que estoy haciendo o existe una mejor manera?

Muchas gracias.
  #2 (permalink)  
Antiguo 28/11/2008, 21:38
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 3 meses
Puntos: 7
Respuesta: Conexiones MySQL

Desde mi punto de vista es poco mantenible.

Imaginate si de un momento a otro tenés que cambiar el password, tenés que cambiarlo en todas las funciones. Yo lo que hago es crear una función de conexión y la invoco desde cada lugar (función o lo que sea) para establecer la conexión. Llegado el caso si hay que hacer cambios, los hago en esa sola función.

¿Se entiende?

Saludos.
  #3 (permalink)  
Antiguo 29/11/2008, 03:54
 
Fecha de Ingreso: junio-2004
Mensajes: 266
Antigüedad: 19 años, 10 meses
Puntos: 8
Respuesta: Conexiones MySQL

Si no quieres complicarte la vida, pasa la conexión como parámetro a las funciones que accedan a base de datos, así no tienes que estar creando/cerrando conexiones por cada acceso.

Si ya quieres complicarte un poco pero tener mejor resultado, hazte un pool de conexiones (hay ejemplos por google).
__________________
WebSenior
  #4 (permalink)  
Antiguo 29/11/2008, 09:30
Avatar de fallenagus  
Fecha de Ingreso: noviembre-2008
Ubicación: Santa Cruz - Bolivia
Mensajes: 52
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: Conexiones MySQL

Buenas mira lo que yo hago es esto, haber si te sirve: Creo una pagina que se llama "conec.php" que contiene la sgte función:
Código PHP:
function Conectarse() {
   if (!(
$link=mysql_connect("localhost","root","")))  {
      echo 
"Error conectando a la base de datos.";
      exit();   }
   if (!
mysql_select_db("pedidos",$link))   {
      echo 
"Error seleccionando la base de datos.";
      exit();   }
   return 
$link;

En tu hoja de funciones en la primera linea haces un include, y tu hoja y tu función quedarían así:
Código PHP:
include("conec.php");

function 
getVariable($var){
$link Conectarse();//aqui creas la conexión
$sqlbusca "SELECT valor FROM configuracion WHERE variable = '".$var."'";
$variable mysql_query($sqlbusca$link) ;//aca utilizas la conexion
$datos mysql_fetch_array($variable);
$valor $datos["valor"];
return 
$valor

Y no necesitas cerrar la conexión ni liberar variables por que se liberan cuando salís de tu función getVariable(), bueno es otra forma haber si te sirve.
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 11:19.