ERROR CON MYSQL_FREE_RESULT

PRINCIPIANTE
16 de Diciembre del 2003
POR QUE ME SALE ESTE ERROR
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in F:Apache2htdocsfauaNueva carpetaoriginal okcontrol.php on line 16

Warning: Cannot modify header information - headers already sent by (output started at F:Apache2htdocsfauaNueva carpetaoriginal okcontrol.php:16) in F:Apache2htdocsfauaNueva carpetaoriginal okcontrol.php on line 25

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in F:Apache2htdocsfauaNueva carpetaoriginal okcontrol.php on line 27

<?
//vemos si el usuario y contraseña es váildo
$conn = mysql_connect("localhost","root","copperkey");
//selecciono la BBDD
mysql_select_db("login",$conn);

//Sentencia SQL para buscar un usuario con esos datos
$ssql = "SELECT * FROM login WHERE cod='$usuario' and password='$contrasena'";

//Ejecuto la sentencia
$rs = mysql_query($ssql,$conn);

//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa conbinación usuario/contraseña
if (mysql_num_rows($rs)!=0){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
session_register("autentificado");
$autentificado = "SI";
header ("Location: aplicacion.php");
}else {
//si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=si");
}
mysql_free_result($rs);
mysql_close($conn);


/*
if ($_POST["usuario"]=="miguel" && $_POST["contrasena"]=="qwerty"){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
$_SESSION["autentificado"]= "SI";
header ("Location: aplicacion.php");
}else {
//si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=si");
}
*/

?>

rargueso
16 de Diciembre del 2003
El primer error se produce porque el query no devuelve ningun registro.
Lo solventas con la @:
if (@mysql_num_rows($rs)!=0){

Si te fijas el segundo error se produce al salir por pantalla el primer error. EL header no se puede producir pq ya hay texto por pantalla.

No es necesario que liberes el query y desconectes, pq al acabar el scrip se libera la memoria que consumia y se desconecta de la base de datos (si la conexion NO se ha definido como persistente, lo cual es habitual).