Foros del Web » Programando para Internet » PHP »

Duda con conexion a la BD

Estas en el tema de Duda con conexion a la BD en el foro de PHP en Foros del Web. Hola Amigos!!! solamente queria saber si es 100% necesario pasarle a una funcion siempre la conexion a la bd por ejemplo en una funcion hago ...
  #1 (permalink)  
Antiguo 24/01/2012, 07:51
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 14 años, 1 mes
Puntos: 4
Duda con conexion a la BD

Hola Amigos!!!
solamente queria saber si es 100% necesario pasarle a una funcion siempre la conexion a la bd
por ejemplo
en una funcion hago un insert y un update y al final de mysql_query le pongo la conexion
Código PHP:
Ver original
  1. public function editar_cue($cuecaj_id,$cuecaj_cod,$rcuecaj,$scuecaj,$cuecaj_detalle,$cuecaj_impu,$cuecaj_status){
  2.  
  3.     $sql=" UPDATE cue_caj "
  4.             ." SET "
  5.             ." cuecaj_cod='$cuecaj_cod', "
  6.             ." rcuecaj='$rcuecaj', "
  7.             ." scuecaj='$scuecaj', "
  8.             ." cuecaj_detalle='$cuecaj_detalle', "
  9.             ." cuecaj_impu='$cuecaj_impu', "
  10.             ." cuecaj_status='$cuecaj_status' "
  11.             ." WHERE "
  12.             ." cuecaj_id=$cuecaj_id ";
  13.    
  14. @       $res=mysql_query($sql,Conectar::con()) ;
  15.  
  16. $sql2=mysql_query("SELECT R.rcuecaj_cod,S.scuecaj_cod,C.cuecaj_cod FROM cue_caj C
  17.                         INNER JOIN r_cue_caj R ON C.rcuecaj=R.rcuecaj_id
  18.                         INNER JOIN s_cue_caj S ON C.scuecaj=S.scuecaj_id WHERE C.cuecaj_id ='".$cuecaj_id."'",Conectar::con()) or die (mysql_error());
  19.                         while($cuenta=mysql_fetch_array($sql2))
  20.                         {
  21.                             mysql_query("UPDATE cue_caj SET cuecaj_alias='".trim($cuenta['rcuecaj_cod'].$cuenta['scuecaj_cod'].$cuenta['cuecaj_cod'])."' WHERE cuecaj_id='".$cuecaj_id."'",Conectar::con()) ;
  22.                            
  23.                             }
  24. }
les pregunto porque al ultimo mysql_query me habia olvidado de ponerle la conexion y funcionaba
Saludos y muchas gracias
  #2 (permalink)  
Antiguo 24/01/2012, 07:55
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
Respuesta: Duda con conexion a la BD

Creo que en mysql, no hace falta colocar siempre la conexion, eso sirve en el caso de que tengas mas de una conexion y asignarsela!!.
  #3 (permalink)  
Antiguo 24/01/2012, 08:02
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 6 meses
Puntos: 394
Respuesta: Duda con conexion a la BD

Si tu tienes 2 sentencias SQL una seguida de otra, y solo tienes una conexión a la base de datos PHP asume la conexión existente (abierta) para realizar las consultas así no le pases el parámetro a la función myql_query. Por ejemplo si vos tenes esto:

Código PHP:
Ver original
  1. //conexion aqui
  2. mysql_query($query, $conexion);
  3. mysql_query($query);

Mira q al segundo query no le paso el parametro de conexion, pero PHP asume que la conexion abierta es la que debe utilizar para realizar el segundo query, cosa contraria en el segundo ejemplo:

Código PHP:
Ver original
  1. //conexion aqui
  2. mysql_query($query, $conexion);
  3. mysql_query($query);

El segundo query no sera ejecutado y te mostrara error ya que PHP no encuentra ninguna conexión abierta para realizar dicha transacción.

Espero que esto te sirva de ayuda...!
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #4 (permalink)  
Antiguo 24/01/2012, 08:04
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Duda con conexion a la BD

Buenisimo Gracias por Contestarme
estoy usando mysql com bd
Ahora , en que momento se la asigno la conexion?
yo tengo esta clase
Código PHP:
Ver original
  1. class Conectar{
  2.    
  3.     public static function con(){
  4.        
  5.        
  6. @       $conexion=mysql_connect("localhost","usuario","pass");
  7.         mysql_query("SET NAMES 'utf8'");
  8.         mysql_select_db("nombre_bd",$conexion);
  9.         return $conexion;
  10.         mysql_free_result($conexion);
  11.        
  12.         }
  13.  
  14.     }
entonces cuando creo otra funcion que contenga varios mysql_query a cual le asigno la conexion?
Muchas gracias!!!
  #5 (permalink)  
Antiguo 24/01/2012, 08:06
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
Respuesta: Duda con conexion a la BD

lo podes incluir al comienzo, solamente y ya quedaria abierta!!
  #6 (permalink)  
Antiguo 24/01/2012, 08:07
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Duda con conexion a la BD

gracias por contestarme jotaincubus
ahora lo entendi mejor, pero tengo otra duda
la conexion va a estar siempre abierta? y si no es asi
en que momento CIERRA la conexion?
Saludos
  #7 (permalink)  
Antiguo 24/01/2012, 08:19
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 6 meses
Puntos: 394
Respuesta: Duda con conexion a la BD

Debes saber que el segundo parámetro de la función mysql_query es "opcional" si esta no es especificada PHP usara la ultima conexión abierta para realizar el query.

Si tu quieres puedes colocar en el constructor la conexión y no especificarla, ya que PHP al ver la conexión abierta en el constructor la utilizara en todos los métodos que las necesite.

Ahora bien, si quieres especificarla en los query simplemente en el constructor guarda la conexión como una propiedad de la clase $connect = Conectar::con(); y después la colocas en todos tus métodos mysql_query($sql, $this->connect);
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #8 (permalink)  
Antiguo 24/01/2012, 08:23
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 6 meses
Puntos: 394
Respuesta: Duda con conexion a la BD

La conexión se cierra con la función mysql_close() pero esta realmente solo se necesita cuando se utilizan conexiones persistentes.

También debes saber que PHP cierra la conexión AUTOMÁTICAMENTE cuando termina de ejecutar el script así que en tu caso no es necesario realizar mysql_close() ya que no tienes conexiones persistentes.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #9 (permalink)  
Antiguo 24/01/2012, 08:27
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Duda con conexion a la BD

Perfecto , mejor explicado imposible!!!
saludos y Muchas gracias!!!

Etiquetas: bd, conexion, mysql, sql
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 21:27.