¿A que te referís con que no te "devuelve nada"?
Por otro lado, los return detienen la ejecución de la función, así que deberías cambiarla para que se ejecuten los echo y el free_result
Tampoco estabas pasando la query como parametro a la función mysql_num_rows, así que la interpretaba como constante (y al no estar definida como el string "mysql_num_rowS") cosa que está mal...
Código PHP:
function test_subcat($id){
global $con;
$sql = "select * from categorias where identificador='$id'";
$rs = mysql_query($sql, $con);
if(mysql_num_rows($rs) > 0){
echo "Ha devuelto verdadero";
mysql_free_result($rs);
return true;
}
else{
echo "Ha devuelto falso";
mysql_free_result($rs);
return false;
}
}