Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Warning: mysql_close(): 4 is not a valid MySQL-Link resource...

Estas en el tema de Warning: mysql_close(): 4 is not a valid MySQL-Link resource... en el foro de PHP en Foros del Web. Buenas! Trabajo en un script PHP que realiza algunas consultas MySQL , casi todo bien. Se realizan las consultas exitosamente, se guardan datos, etc. Pero ...
  #1 (permalink)  
Antiguo 26/04/2014, 16:08
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Pregunta Warning: mysql_close(): 4 is not a valid MySQL-Link resource...

Buenas!


Trabajo en un script PHP que realiza algunas consultas MySQL, casi todo bien. Se realizan las consultas exitosamente, se guardan datos, etc.

Pero acabo de encontrar un error: Warning: mysql_close(): 4 is not a valid MySQL-Link resource...

Este error lo marca en la línea en la que cierro la conexión a la base de datos:
Código PHP:
mysql_close($conexion); 
La variable $conexion:
Código PHP:
    $conexion mysql_connect("localhost""root"""); 
¿A qué se refiere exactamente ese error?

Saludos!

  #2 (permalink)  
Antiguo 26/04/2014, 16:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Warning: mysql_close(): 4 is not a valid MySQL-Link resource...

La librería MYSQL de PHP, no es tema de MySQL, sino de PHP.

Movido a foro de PHP.

Nota: Verifica si el resource de la conexión sigue siendo válido. Tiene todo el aspecto de que intentas cerrar una conexión cerrada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 26/04/2014, 16:27
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Warning: mysql_close(): 4 is not a valid MySQL-Link resource...

Como bien te dice gnzsoloyo, debes de verificar si la conexión persiste, en base a eso, realizas una determinada acción.

Código PHP:
Ver original
  1. if (!$conexion)
  2.     echo 'La conexión ya se cerró';
  3. else
  4.     mysql_close($conexion);

También puedes cerrar la conexión sin necesidad de pasarle parámetro alguno a la función, pues como dice en el manual oficial:

Cita:
Iniciado por Manual de PHP
Si link_identifier (el recurso de conexión) no se especifica, se usará el último enlace abierto.
Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 26/04/2014, 22:08
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Respuesta: Warning: mysql_close(): 4 is not a valid MySQL-Link resource...

Gracias por contestar, gnzsoloyo y Alexis88.

Me comentan que probablemente estoy tratando de cerrar una conexión ya cerrada. Pero no, eh! Ya chequé la conexión y está abierta. Sigo tal cual el código puesto por Alexis88 para asegurarme del estado de la conexión y si está abierta procedo a poner el mysql_close(), pero el warning aparece nuevamente en esta misma línea.

¿Alguna otra sugerencia?

Por otro lado, así es, ya había leído algo acerca de que el mysql_close() funciona aun sin parámetros. Pero si lo hago así, manda un nuevo error: Warning: mysql_close(): no MySQL-Link resource supplied in...

Saludos!

Última edición por berkeleyPunk; 26/04/2014 a las 22:14
  #5 (permalink)  
Antiguo 26/04/2014, 22:18
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Warning: mysql_close(): 4 is not a valid MySQL-Link resource...

Quizá si muestras todo el código de ese script, podamos ayudarte a encontrar el problema.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 27/04/2014, 09:06
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
De acuerdo Respuesta: Warning: mysql_close(): 4 is not a valid MySQL-Link resource...

Cita:
Iniciado por Alexis88 Ver Mensaje
Quizá si muestras todo el código de ese script, podamos ayudarte a encontrar el problema...
Te tomé la palabra, maestro, y decidí poner el código completo... pero como es mi costumbre, lo estaba reduciendo lo más posible para dejar sólo lo que interviene en el problema y no embotar la mirada de quien lo leyera, como es la horrible costumbre de otros, como éste. Pero mientras iba borrando líneas, encontré el problema .

Resulta que gnzsoloyo y tú tenían razón, estaba tratando de cerrar una conexión ya cerrada. Muestro cómo estaba la cosa.

Código PHP:
if ( (!isset($_POST["formaEntrada"])) && (!isset($_POST["formaRegistro"])) )
{
    include(
"formaEntrada.php");
}





else if ( isset(
$_POST["formaEntrada"]) )
{    
    include(
"conexion.php");

    
$entrarEmail      $_POST["emailDeFormaEntrada"];
    
$entrarContrasena $_POST["contrasenaDeFormaEntrada"];
    
$query            "SELECT email, contrasena from registros WHERE email='$entrarEmail'";
    
$datos            mysql_query($query) or die(mysql_error());

    if ( 
mysql_num_rows($datos) )
    {
        
$contrasenaBD mysql_result($datos0"contrasena");

        if( 
$entrarContrasena == $contrasenaBD )
        {
            include(
"resultados.php");

            if ( !
$conexion )
            {
                echo 
'<script type="text/javascript"> alert("La conexión está cerrada"); </script>';
            }
            else
            {
                echo 
'<script type="text/javascript"> alert("La conexión está abierta!"); </script>';
                
mysql_close($conexion);
            }                    
        }
    }


Tengo 1 formulario de log in que aparece en documento.php si el usuario acaba de llegar. Una vez que el usuario introduce sus credenciales, se recarga documento.php, y se procede a checar en la BD si su usuario y contraseña coinciden con la BD. Si coinciden, mediante un include meto los resultados.php.

Después, como indicaste, Alexis88, checo el estado de la conexión, que siempre indica que está abierta. El warning me dirige a ese mysql_close($conexion) que aparece en documento.php.

Pero resulta que en resultados.php hago más consultas MySQL y ahí también ponía mysql_close($conexion). Y como resultados.php entraba a documento.php mediante un include, pues el mysql_close($conexion) de resultados.php cerraba la conexión antes y salía sobrando el de documento.php.


Saludos!

Última edición por berkeleyPunk; 27/04/2014 a las 10:58

Etiquetas: mysql
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 22:20.