<?php
class MySQL
{
    protected $mysql;
    function __construct()
    {
                //Get MySQL config values from config.ini file
        if($config = parse_ini_file("../config.ini"))
        {
            // Obtener los valores del fichero de configuración config.ini
            $ip = $config["ip"];
            $user = $config["usuario"];
            $pass = $config["password"];
            $bd = $config["bd"];
                          
                         //Connection between a database and php
            $this->mysql = new mysqli($ip, $user, $pass, $bd);
        }
    }
    function setResultQuery($query, $param)
    {
        $array = NULL;
        if(!$this->mysql->connect_errno)
        {
            $stmt = $this->setStatement($query, $param);
            try
            {
                if($stmt != NULL)
                {
                    if($stmt->execute())
                    {
                        //Obtener resultados
                        $stmt->store_result();
                        $variables = array();
                        $data = array();
                        $meta = $stmt->result_metadata();
                        while($field = $meta->fetch_field())
                        {
                            $variables[] = &$data[$field->name];
                        }
                        call_user_func_array(array($stmt, 'bind_result'), $variables);
                        $i=0;
                        while($stmt->fetch())
                        {
                                $array[$i] = array();
                                foreach($data as $k=>$v)
                                $array[$i][$k] = $v;
                                $i++;
                        }
                        $stmt->close();
                    }
                }
            }catch(Exception $e){
                $array = FALSE;
            }
        }
        return $array;
    }
    function setStatement($query, $param)
    {
        try
        {
            $stmt = $this->mysql->prepare($query);
            $ref = new ReflectionClass('mysqli_stmt');
            if(count($param) != 0)
            {
                
                $method = $ref->getMethod('bind_param');
                $method->invokeArgs($stmt, $param);
            }
        }catch(Exception $e){
            if($stmt != null)
            {
                $stmt->close();
            }
        }
        return $stmt;
    }
    function setNoResultQuery($query, $param)
    {
        $validation = FALSE;
        if(!$this->mysql->connect_errno)
        {
            try
            {
                $stmt = $this->setStatement($query, $param);
                if($stmt != null)
                {
                    if($stmt->execute())
                    {
                        $stmt->close();
                        $validacion = TRUE;
                    }
                }
            }catch(Exception $e){
                $validation = FALSE;
            }
        }
        return $validation;
    }
    function __destruct()
    {
        $this->mysql->close();
    }
}
?>