Ver Mensaje Individual
  #14 (permalink)  
Antiguo 08/01/2009, 08:49
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: Opinion sobre clase para MySQL

Enrique: me han sido muy utiles tus comentarios.......

... quisiera hacer lo que decis de la separacion en dos clases porque de hecho ahora agregué operaciones mas especificas de MySQL asi que lo haré como dices en cuanto entienda un poco mas

Aca la ultima version [hay una mas....fijate mas abajo por favor] que funciona perfecto con mi lote de pruebas:

Código PHP:
<?php

class Database
{
    private static 
$_instancia;

    private 
$_con;
    private 
$_user;
    private 
$_pass;
    private 
$_server 'localhost';
    private 
$_db;
    private 
$_sql;
    private 
$_resultado;
    private 
$_total;
    private 
$_pos 0;

    
/* Si es privado, no se usa nunca */
    
private function __construct(){}

    public static function 
getInstance()
    {
        if (!isset(
self::$_instancia)) {
            
$obj __CLASS__;
            
self::$_instancia = new $obj;
        }
        return 
self::$_instancia;
    }
    public function 
setServer($server)
    {
        
$this->_server $server;
    }
    public function 
setUser($user)
    {
        
$this->_user $user;
    }
    public function 
setPass($pass)
    {
        
$this->_pass=$pass;
    }
    public function 
connect($db)
    {
        if (!isset(
$this->_con)){
            
            
$this->_db $db;

            
$this->_con mysql_connect(
                
$this->_server,
                
$this->_user,
                
$this->_pass) or die(mysql_error()
            );
            
mysql_select_db($db) or die(mysql_error());
        }
    }
    public function 
execute($sql)
    {
        
$this->_sql $sql;

        
$this->_resultado mysql_query($this->_sql);

        if (
strtolower($consulta[0]) == 's'){
            
$this->_total mysql_num_rows($this->_resultado);
        }else{            
            
$this->_total mysql_affected_rows($this->_con);
        }        
    }
    public function 
next()
    {
        
$this->_pos++;
    }
    public function 
prev()
    {
        
$this->pos--; 
    }
    public function 
getTotal()
    {
        return 
$this->_total;
    }
    public function 
getOne($campo)
    {
        return 
mysql_result($this->_resultado,$this->_pos,$campo);
    }    
    public function 
getMulti()  // get into an array
    
{
        return 
mysql_fetch_array($this->_resultado);
    }        
    public function 
insert ($my_table$my_array) {  // mysql_insert_array:  as opposite of mysql_fetch_array:     
      
$keys array_keys($my_array); 
      
$values array_values($my_array); 
      
$sql 'INSERT INTO ' $my_table .' VALUES ("' implode('","'$values) . '")'
      echo 
$sql;
      
$this->execute ($sql);    
    }    
    public function 
goRow ($fila_num){
      return 
mysql_data_seek ($this->_resultado$fila_num);
    }  
    public function 
fetchRow (){  // se trae una fila Y deja los campos en un array
      
return mysql_fetch_assoc($this->_resultado);
    }  
    private function 
__clone()
    {
        throw new 
Exception('No se permite clonar');
    }
}
?>
__________________
Salu2!

Última edición por Italico76; 08/01/2009 a las 09:27