Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/01/2007, 17:48
Avatar de franquero
franquero
 
Fecha de Ingreso: julio-2005
Mensajes: 179
Antigüedad: 18 años, 10 meses
Puntos: 1
Empezando con clases -> problema

Hola a todos,

estoy iniciándome en las clases, y después de un primer vistazo a la documentación me he lanzado al ruedo.

He escrito una clase para conectarme a MySQL, hacer una consulta, liberar memoria y desconectar. Me funciona todo menos la liberación de memoria.
Aquí está la clase. Sé que será 99% mejorable, no os pido que la depuréis, sólo quiero saber por qué no funciona mysql_free_result:
Código PHP:
<?php

class db_conexion {

    
/* Variables de conexion */
    
var $servidor;
    var 
$usuario;
    var 
$clave;
    var 
$db;
    
    
/* Identificador de conexion */
    
var $conexion_ID;
    
    
/* Identificador de consulta */
    
var $consulta_ID;
    
    
    
//Conexion
    
function conexion($server,$user,$pass,$database) {
    
        
$this->servidor $server;
        
$this->usuario $user;
        
$this->clave $pass;
        
$this->db $database;
        
         
$this->conexion_ID=mysql_connect($this->servidor,$this->usuario,$this->clave);
        
mysql_select_db($this->db,$this->conexion_ID);
            
            if (
$this->conexion_ID) {
                print 
'Conexión realizada con éxito<br>';
            } else {
                print 
'Cagon crom, algo ha fallado<br>';
            }
    }
    
    
//Consulta
    
function consulta($sql) {
    
        
$this->consulta_ID mysql_query($sql$this->conexion_ID);
            if(
$this->consulta_ID) {
                print 
'Consulta realizada con éxito<br>';
            } else {
                print 
'La has cagado<br>';
            }
        }
    
    
//mysql_num_rows
    
function num_rows() {
        
$filas=mysql_num_rows($this->consulta_ID);
        return(
$filas);
    }
    
    
//mysql_fetch_array
    
function fetch_array() {
        
mysql_fetch_array($this->consulta_ID);    
    }
    
    
//mysql_free_result
    
function free_result() {
        
mysql_free_result($this->consulta_ID);
    }
    
    
//Desconexion
    
function desconexion() {
        
$descon=mysql_close($this->conexion_ID);
            if(
$descon) {
                print 
'desconexión realizada con éxito<br>';
            } else {
                print 
'No se ha podido desconectar, algo estás haciendo mal, calamar<br>';
            }
    }

}

?>
Y así la utilizo:
Código PHP:
<?php
require("datos_conexion.inc.php");
require(
"conexion.inc.php");

$con = new db_conexion();
$con->conexion($servidor_,$usuario_,$clave_,$db_);
$con->consulta("SELECT v_check from t_checks");
    
    if(
$con->num_rows()!=0) {
        while(
$row=$con->fetch_array()) {
            print 
$row['v_check'] . '<br>';
        }
    }

$con->free_result();    
$con->desconexion();
?>
El error es: mysql_free_result(): supplied argument is not a valid MySQL result resource in...

Le he dado 20 vueltas y no averiguo qué puede ser lo que falla. Será cualquier pego que haya pasado por alto. Espero que podáis aclararme esta duda existencial.
Un saludo a todos.
__________________
Es una suerte que la sociedad libre sea más productiva, porque de no haberlo sido jamás se habría tolerado.