Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/04/2009, 08:02
machoman112233
Invitado
 
Mensajes: n/a
Puntos:
Clase Conexion MySQL... opinion...

Bueno, llevo bastante tiempo intentando hacer una clase que bien estructurada... ahora que por fin la he acabado, bueno, hace tiempo pero no sabia si ponerla o no, quiero que me deis vuestras opiniones sobre que os parece, si no es mucha molestia... y si todo esta bien la podriais poner como aporte...

PD: puede que sobran variables...

Código php:
Ver original
  1. <?php
  2. class ConectarMySQL
  3. {
  4.     //variables conexion con la base de datos / servidor
  5.     private $servidor;                  //nombre de host
  6.     private $base_de_dades;             // nombre de la base de datos
  7.     private $usuari;                    // nombre de usuario base de datos
  8.     private $contrasenya;               //contraseña acceso base de datos
  9.     //variables fin conexion con la base de datos / servidor
  10.    
  11.     //conexion con el servidor
  12.     private $connect;                   //guarda la conexion con el MySQL host.
  13.     private $persistente;               //boolean para saber si la conexion sera persistente o no.
  14.     //fin conexion con el servidor
  15.  
  16.     //consultas base de datos
  17.     var $consulta;                  //guarda la consulta MySQL.
  18.     var $resultat;                  //guarda resultado de la consulta MySQL.
  19.     var $numfilas;                  //numero de filas de una consulta MySQL.
  20.     var $numcampos;                 //numero de capos de una consulta MySQL.
  21.     //fin consultas base de datos
  22.    
  23.    //creacion consulta INSERT / UPDATE
  24.     private $array_key;                 //guarda el nombre de los campos MySQL.
  25.     private $array_valor;               //guarda valores associados a los campos MySQL.
  26.    
  27.     private $nombre_campo;              //guarda los campos preparados para la consulta MySQL.
  28.     private $valor_compo;               //guarda los valores preparados para la consulta MySQL.
  29.     //fin creacion consulta INSERT / UPDATE
  30.    
  31.     //variables adicionales
  32.     private $error;                     //guarda el ultimo error generado.
  33.     //fin variables adicionales
  34.    
  35.  
  36.     function __construct($servidor = "", $usuari = "", $contrasenya = "", $base_de_dades = "", $persist = False)
  37.     {
  38.         //Damos valores a las variables de conexion (por defecto o no).    
  39.         //Determinamos si la conexion sera persistente o no.
  40.         $this->servidor      = (!empty($servidor))?  $servidor : "localhost";
  41.         $this->usuari        = (!empty($usuari))?  $usuari : "";
  42.         $this->contrasenya   = (!empty($contrasenya))?  $contrasenya : "";
  43.         $this->base_de_dades = (!empty($base_de_dades))?  $base_de_dades : "";
  44.     }
  45.  
  46.     function Conectar()
  47.     {
  48.         //Establece la conexion con el servidor de la base de datos.
  49.         if($this->persistente)
  50.         {
  51.             //Esta conexion la cierra el servidor (mysql_close no funciona).
  52.             $this->connect = @mysql_pconnect($this->servidor, $this->usuari, $this->contrasenya);
  53.         }
  54.         else
  55.         {
  56.             $this->connect = @mysql_connect($this->servidor, $this->usuari, $this->contrasenya);           
  57.         }
  58.        
  59.         //Verifica si la conexion se ha echo con el servidor.
  60.         if(!$this->connect)
  61.         {
  62.             $this->error = mysql_error();
  63.             return(False);
  64.         }
  65.         else
  66.        {
  67.             if(!empty($this->base_de_dades)){$this->SeleccionarBaseDatos();}
  68.             return($this->connect);
  69.        }
  70.     }
  71.    
  72.     //Selecciona la base de datos a la cual se tiene que conectar.
  73.     //Comprueba que se ha echo correctamente.
  74.     function SeleccionarBaseDatos($bd = "",$con = null)
  75.     {
  76.         if(!empty($bd)){$this->base_de_dades = $bd;}
  77.         if($con != null){$this->connect = $con;}
  78.          
  79.         if(!@mysql_select_db($this->base_de_dades, $this->connect))
  80.         {
  81.             $this->error = mysql_error();
  82.             return(False);
  83.         }
  84.         else{return(true);}
  85.     }
  86.    
  87.     //no hacer caso...
  88.     /*function AutoConectar($bool)
  89.     {
  90.         if($bool)
  91.         {
  92.             $this->ConectarMySQLServer(SERVER,USER,PASS,DB,False);
  93.             $this->Conectar();
  94.         }
  95.     }*/
  96.  
  97.     //Envia una consulta al servidor de la base de datos.
  98.     //Compruba que la consulta se ha resulto con exito.
  99.     function Consulta($consulta_exe,$con = null)
  100.     {
  101.         //compruba que la conulsta enviada sea valida.
  102.         if(empty($consulta_exe))
  103.         {
  104.              $this->error = "La consulta a tramitar no es valida.<br />";
  105.              return(False);        
  106.         }
  107.        
  108.         //Comprueba que la consulta se ha echo.
  109.         $this->consulta = ($con != null)? @mysql_query($consulta_exe,$con) : @mysql_query($consulta_exe,$this->connect);
  110.         if(!$this->consulta)
  111.         {
  112.             $this->error = mysql_error();
  113.             return(False);
  114.         }
  115.         else
  116.         {
  117.             return($this->consulta);
  118.         }
  119.     }
  120.    
  121.     function UltimoID()
  122.     {
  123.         //Devuelve el ultimo ID generado por un INSERT
  124.         //en un campo de auto incremento.
  125.         return(mysql_insert_id());
  126.     }
  127.  
  128.     function VerDatos($ver_consulta,$tipo = "")
  129.     {
  130.         //Devuelve el resultado/las filas de la consola que se ha echo
  131.         //a la base de datos.
  132.         if(!$ver_consulta)
  133.         {
  134.             $this->error = "Parametro invalido enviado para mostrar los datos.";
  135.             return(False);
  136.         }
  137.        
  138.         if($tipo == "MYSQL_ASSOC"){$this->resultat = @mysql_fetch_array($ver_consulta, MYSQL_ASSOC);}
  139.         if($tipo == "MYSQL_NUM"){$this->resultat = @mysql_fetch_array($ver_consulta, MYSQL_NUM);}
  140.         if($tipo == "MYSQL_BOTH"){$this->resultat = @mysql_fetch_array($ver_consulta, MYSQL_BOTH);}
  141.         if($tipo == ""){$this->resultat = @mysql_fetch_object($ver_consulta);}    
  142.                
  143.        //Comprueba si la consulta ha tenido existe.
  144.         if($this->resultat)
  145.         {
  146.             return ($this->resultat);
  147.         }
  148.         else
  149.         {
  150.             $this->error = mysql_error();
  151.             return(False);
  152.         }
  153.     }
  154.    
  155.     function NumFilas($con = null)
  156.     {
  157.         //Devuelve el numero de filas de la consulta.
  158.         $con = ($con != null)? $con : $this->consulta;
  159.        
  160.         $this->numfilas = mysql_num_rows($con);
  161.         return($this->numfilas);
  162.     }
  163.    
  164.     function NumCampos($con = null)
  165.     {
  166.         //Devuelve el numero de campos de la consulta.
  167.         $con = ($con != null)? $con : $this->consulta;
  168.        
  169.         $this->numcampos = mysql_num_fields($con);
  170.         return($this->numcampos);
  171.     }
  172.    
  173.     function crearDB($db)
  174.     {
  175.         if(function_exists("mysql_create_db"))
  176.         {
  177.             if(!@mysql_create_db($db))
  178.             {
  179.                 $this->error = mysql_error();
  180.                 return(False);
  181.             }
  182.             else
  183.             {
  184.                 return(True);
  185.             }
  186.         }
  187.         else
  188.         {
  189.             $sql = "CREATE DATABASE `".$db."`";
  190.             if(!$this->Consulta($sql)){return(False);}
  191.             else{return(True);}
  192.         }
  193.     }
  194.    
  195.     function InsertarValoresSQL($array_insert,$campo_insert)
  196.     {
  197.         //Genera la consulta MySQL que se envia al servidor (INSERTAR).
  198.         //Se le pasa una array asociativa y convierte
  199.         //los key's de la array en los campos que corresponden
  200.         //a la base de datos y los valores respectivos a valores
  201.         //associados a cada campo.
  202.        
  203.         $this->array_key = array_keys($array_insert);
  204.         $this->array_valor = $array_insert;
  205.        
  206.         for($i = 0;$i < count($this->array_valor);$i++)
  207.         {
  208.             $this->array_valor[$this->array_key[$i]] = (is_numeric($this->array_valor[$this->array_key[$i]]))? $this->array_valor[$this->array_key[$i]] : "'".$this->limpiar($this->array_valor[$this->array_key[$i]])."'";
  209.         }  
  210.        
  211.         for($i = 0;$i < count($this->array_key);$i++)
  212.         {
  213.             $this->array_key[$i] = "`".$this->array_key[$i]."`";
  214.         }
  215.        
  216.         $this->nombre_campo = implode(",",$this->array_key);
  217.         $this->valor_campo = implode(",",$this->array_valor);
  218.        
  219.         $sql = "INSERT INTO `".$campo_insert."` (".$this->nombre_campo.")";
  220.         $sql .= " VALUES(".$this->valor_campo.");";
  221.         return($sql);
  222.     }
  223.    
  224.     function ActualizarValoresSQL($nuevos_valores,$tabla,$where)
  225.     {
  226.         //Genera la consulta MySQL que se envia al servidor (ACTUALIZAR).
  227.         //Se le pasa una array asociativa y convierte
  228.         //los key's de la array en los campos que corresponden
  229.         //a la base de datos y los valores respectivos a valores
  230.         //associados a cada campo.
  231.         $this->array_key = array_keys($nuevos_valores);
  232.         $this->array_valor = $nuevos_valores;  
  233.        
  234.         for($ind = 0;$ind < count($this->array_key);$ind++)
  235.         {
  236.             $valores[$ind] = "`".$this->array_key[$ind]."` = '". $this->array_valor[$this->array_key[$ind]]."'";
  237.         }
  238.        
  239.         $valores = implode(",",$valores);
  240.        
  241.         $sql = "UPDATE `".$tabla."` SET ".$valores;
  242.         $sql .= " WHERE ".$where.";";
  243.         return($sql);
  244.        
  245.     }
  246.    
  247.     function VerError()
  248.     {
  249.         //Devuelve el ultimo error generado
  250.         //si este existe.
  251.         if(!empty($this->error))
  252.         {
  253.             return($this->error);
  254.         }
  255.         else
  256.         {
  257.             return(False);
  258.         }
  259.     }
  260.  
  261.     function CerrarConexion()
  262.     {
  263.         //Cierra la conexion no-persistente con el servidor MySQL.
  264.         mysql_close($this->connect);
  265.     }
  266.  
  267.     function LimpiarConsulta()
  268.     {
  269.         //Libera la memoria associoada a la variable donde se guarda la consulta.
  270.         mysql_free_result($this->consulta);
  271.     }
  272.    
  273.     private function limpiar($variable)
  274.     {
  275.         //para escapar los caracteres especiales.
  276.         if(get_magic_quotes_gpc()){$variable = mysql_real_escape_string(stripslashes(trim($variable)));}
  277.         else{$variable = mysql_real_escape_string(trim($variable));}
  278.         return($variable);
  279.     }
  280.    
  281.     function existTable($table)
  282.     {
  283.         //verifica si una tala existe.
  284.         //si es asi devuelve true sino false.
  285.         $bool = false; 
  286.         $tb_list = mysql_list_tables($this->base_de_dades,$this->connect);
  287.        
  288.         while(list($tb) = mysql_fetch_row($tb_list))
  289.         {
  290.             if($table == $tb)
  291.             {
  292.                 $bool = true;
  293.                 break;
  294.             }
  295.         }
  296.         return($bool);
  297.     }
  298.    
  299.     function existDataBase($database)
  300.     {
  301.         //verifica si una base de datos existe.
  302.         //si es asi devuelve true sino false.
  303.         $bool = false;
  304.         $db_list = mysql_list_dbs($this->connect);
  305.            
  306.         while(list($db) = mysql_fetch_row($db_list))
  307.         {
  308.             if($database == $db)
  309.             {
  310.                 $bool = true;
  311.                 break;
  312.             }
  313.         }
  314.         return($bool);
  315.     }
  316. }
  317. ?>

Última edición por machoman112233; 11/04/2009 a las 02:47