Foros del Web » Programando para Internet » PHP »

Error free_result

Estas en el tema de Error free_result en el foro de PHP en Foros del Web. miren, estoy sacando el numero de registros de una tabla de esta manera... Código PHP:             $comprobarExiste1Registro  =  mysql_query ( "SELECT * FROM $sql_tabla_color_dll" ) or die( "MySQL dice: " . mysql_error ()); ...
  #1 (permalink)  
Antiguo 23/10/2003, 04:58
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
Error free_result

miren, estoy sacando el numero de registros de una tabla de esta manera...

Código PHP:

            $comprobarExiste1Registro 
mysql_query("SELECT * FROM $sql_tabla_color_dll") or die("MySQL dice: ".mysql_error());
            
$existe1Reg mysql_num_rows ($comprobarExiste1Registro) or die("MySQL dice: ".mysql_error());
            
mysql_free_result($existe1Reg);

            if (
$existe1Reg == 1){//no se puede borrar el ultimo registro
                    
FUNC_Error($nErr=10,$textinfo=$langError10,$sql_host=$sql_host,$sql_usuario=$sql_usuario,$sql_pass=$sql_pass,$sql_db=$sql_db,$sql_tabla_sucesos=$sql_tabla_sucesos);//siempre 1 registro, no borrar ultimo
                
exit;
            } 
y resulta que funciona, me dice si tiene 12, 20, o los que sean,,, pero da un error,


Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/sites/site138/users/ddl/web/functions/func.genera.menu.principal.inc.php on line 145

la linea 145 es esa de=> mysql_free_result($existe1Reg);

un saludo

Pd: jejeje, creo que ya entiendo algo las funciones.... buaa como molaaannn, la de code que ahorran y lo reutilizables que son para varias cosas.... cada dia me mola mas php.... esq se saleeee
__________________
3w.valenciadjs.com
3w.laislatv.com

Última edición por nuevo; 23/10/2003 a las 05:01
  #2 (permalink)  
Antiguo 23/10/2003, 05:20
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Si miras en el manual (www.php.net/mysql_free_result), veras que dice que su parametro debe ser un "identificador de de recurso de resultado de MySQL" (o algo parecido). Ese identificador es lo que devuelve mysql_query().

Y lo que hace es "borrar" de la memoria los registros que ha leido de la base de datos. Por eso si despues intentas hacer un mysql_fetch_xxx() con ese identificador, te dara error.

Saludos.

PD: Si, las funciones te ahorran mucho trabajo. Es que en el fondo los programadores somos unos vagos
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 23/10/2003, 05:37
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
perdona josemi, me equivoq con el nombre de la variable, y eso era... gracias...

mysql_free_result($comprobarExiste1Registro);
__________________
3w.valenciadjs.com
3w.laislatv.com
  #4 (permalink)  
Antiguo 23/10/2003, 06:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Observación ...

Para hacer esa función tipo "existe 1 sólo registro" .. te vendría mejor usar COUNT() de Msyql .. es mucho más rápido que usar mysql_num_rows() pues es Msyql el que te dá un sólo resultado con el total de registros que cumplan tu sentencia SQL ...

Código PHP:
comprobarExiste1Registro mysql_query("SELECT COUNT(*) FROM $sql_tabla_color_dll") or die("MySQL dice: ".mysql_error());
$existe1Reg mysql_result($comprobarExiste1Registro,0) or die("MySQL dice: ".mysql_error());
mysql_free_result($comprobarExiste1Registro); 
Y el resto .. lo mismo .. en tu variable $existe1Reg .. tendrás ese total (sea 0 si no exite o >= 1 si hay coincidencias).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 00:46.