Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

warning al modificar un atributo de la tabla

Estas en el tema de warning al modificar un atributo de la tabla en el foro de Mysql en Foros del Web. Hola!!! tengo un problema, al intentar modificar un atributo de una tabla me sale el mensaje: Warning: mysql_free_result(): supplied argument is not a valid MySQL ...
  #1 (permalink)  
Antiguo 22/02/2006, 12:30
vio
 
Fecha de Ingreso: octubre-2005
Mensajes: 48
Antigüedad: 18 años, 6 meses
Puntos: 2
warning al modificar un atributo de la tabla

Hola!!!
tengo un problema, al intentar modificar un atributo de una tabla me sale el mensaje: Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:\Servidor\WEB\SitioHostal\administrador\cambiarE stadoReserva.php on line 42

En cambio, sí que se modifica el atributo, pero supongo que el código no está bien ya que aparece este error que he comentado.

adjunto mi código:
Código PHP:
<?     include("../conexion.php");
            
$con=bd_conexion();
            
$cambiaReserva=$_POST["cambiaReserva"];
            
$idReserva=$_POST["idReserva"];
            
$ssql "SELECT * FROM reservahabitaciones WHERE id='$idReserva'"
            
$rs mysql_query($ssql,$con);
            if (
mysql_num_rows($rs)!=0){
                
$modificar="UPDATE reservahabitaciones SET estadoReserva='$cambiaReserva' WHERE id='$idReserva'";
                
$resultado=mysql_query($modificar,$con);
            }
            
mysql_free_result($rs); 
            
mysql_free_result($resultado); 
            
mysql_close($con);
            
?>
a la línea que se refiere el warning (linea 42) es la de mysql_free_result($resultado), entonces creo que la consulta $modificar no está bien hecha, pero no veo ningun error, el nombre de la tabla ese, y los atributos coinciden con los de la tabla.....
alguien m ayuda?
  #2 (permalink)  
Antiguo 22/02/2006, 13:24
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 5 meses
Puntos: 11
"mata" el recordset dentro del if, asi:

Código PHP:
<?php
   
include("../conexion.php");
   
$con=bd_conexion();
   
$cambiaReserva=$_POST["cambiaReserva"];
   
$idReserva=$_POST["idReserva"];
   
$ssql "SELECT * FROM reservahabitaciones WHERE id='$idReserva'"
   
$rs mysql_query($ssql,$con);
   if (
mysql_num_rows($rs)!=0){
      
$modificar="UPDATE reservahabitaciones SET estadoReserva='$cambiaReserva' WHERE id='$idReserva'";
       
$resultado=mysql_query($modificar,$con);
       if (isset(
$resultado)) mysql_free_result($resultado); 
   }
   
mysql_free_result($rs); 
   
mysql_close($con);
?>
  #3 (permalink)  
Antiguo 22/02/2006, 13:38
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 4 meses
Puntos: 5
No es problema de consulta mas bien diria que es problema de ambito de tus variables php, mira si tu select no te devuelve resultado entonces no entra dentro de tu if, y si no entra la variable resultado no tiene nada para que se libere con mysql_free_result(), por que no lo modificas y lo pones dentro del if :
Código PHP:
<?     include("../conexion.php");
            
$con=bd_conexion();
            
$cambiaReserva=$_POST["cambiaReserva"];
            
$idReserva=$_POST["idReserva"];
            
$ssql "SELECT * FROM reservahabitaciones WHERE id='$idReserva'"
            
$rs mysql_query($ssql,$con);
            if (
mysql_num_rows($rs)!=0){
                
$modificar="UPDATE reservahabitaciones SET estadoReserva='$cambiaReserva' WHERE id='$idReserva'";
                
$resultado=mysql_query($modificar,$con);
                 
mysql_free_result($resultado); 
            }
            
mysql_free_result($rs); 

            
mysql_close($con);
            
?>
cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #4 (permalink)  
Antiguo 22/02/2006, 14:44
vio
 
Fecha de Ingreso: octubre-2005
Mensajes: 48
Antigüedad: 18 años, 6 meses
Puntos: 2
nada


he probado lo que me habeis dicho, pero sigue dando el error.....
pero no lo entiendo, el select devuelve una tupla y $modificar parece que lo hace bien......no se por qué puede ser.....m he atascado mogollón en este código
existe alguna manera, por lo menos, de que no salga el texto del warning?porque si que lo modifica en la base de datos, así que con que no salga el texto de warning me quedo contenta!!
  #5 (permalink)  
Antiguo 22/02/2006, 14:59
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 4 meses
Puntos: 5
Mira leyendo el manual de php me encontre con algo interesante, para el uso de updates, deletes no es necesario el mysql_free_result, solo es necesario cuando usas un select, show, explain o describe segun lei, es decir que si usas en cualquier otro caso te arrojara ese warning, a si que simplemente borra el free_result de tu update, cya:

Cita:
If a non-resource is used for the result, an error of level E_WARNING will be emitted. It's worth noting that mysql_query() only returns a resource for SELECT, SHOW, EXPLAIN, and DESCRIBE queries.
__________________
"El Conocimiento es de todos, no solo de algunos"
  #6 (permalink)  
Antiguo 22/02/2006, 15:10
vio
 
Fecha de Ingreso: octubre-2005
Mensajes: 48
Antigüedad: 18 años, 6 meses
Puntos: 2

Muxiiiiiiiiiiiiiiiiiisimas gracias!!!!!!
Me estaba volviendo loca, porque he hecho un delete y también me daba un warning!!!!!
gracias, de verdad!!!
ahora ya podré dormir esta noche, jeje!!
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:01.