PHP - Clase para conectar a mySql

Informatica Add comments

Decidí publicar algo que me a ayudado de base para mis programas en PHP orientados a objetos, y esto es el conector con la base de datos. Este objeto tiene la ventaja de que crea la conexión cuando se requiere y cierra la misma una vez terminada las consultas. Si la combinamos con la función autoload(), creo que obtenemos un buen componente para nuestra aplicación.


<blockquote>
<pre><span style="color: #999999;">// Conector a la base de datos
class conector {
   protected $conexion;
   protected $servidor, $usuario, $contrasena, $bd:
   protected $comprueba=false;
   public $array=array();
   // Se inicia esta funcion cuando se construye la clase
   public function __construct(){
       $args = func_get_args();
       if(empty($args)){ // Si no hay parametros usa la configuracion por default
	  $this->servidor = SERVIDOR;
	  $this->usuario = USUARIO;
  	  $this->contrasena = CONTRASENA;
	  $this->bd = BD;
      }elseif($args[1]==NULL){ // Le un archivo enviado como unico parametro
	  if(file_exists($args[0])){
	     set_include_path(directorio());
	     include_once($args[0]);
             $this->servidor = SERVIDOR;
	     $this->usuario = USUARIO;
	     $this->contrasena = CONTRASENA;
	     $this->bd = $args[0];
          }else{
	     error("No se encontro el archivo para la conexion de la clase <i>mysql</i>");
	     break;
          }
      }elseif($args[3]!=NULL){ // Se envian 4 parametros [host,base de datos,usuario,constraseña]
	  $this->servidor = $args[0];
	  $this->bd = $args[1];
	  $this->usuario = $args[2];
	  $this->contrasena = $args[3];
      }else{
	  error("Forma incorrecta de llamar el constructor de conexion de la clase <i>conector</i>");
	  break;
      }
      $this->conectar();
   }
   // Crea la conexion a la base de datos
   private function conectar(){
      if($this->comprueba){
      $this->conexion = @mysql_connect($this->servidor,$this->usuario,$this->contrasena)
      or die(error("Imposible conectarse al servidor <i>$this->servidor</i> con los datos
      [usuario:<i>$this->usuario</i>] [contraseña:<i>$this->contrasena</i>]"));
      @mysql_select_db($this->bd, $this->conexion) or die (error("No se encontro la base
      de datos [<i>$this->bd</i>]"));
      $this->comprueba=true;
      }
   }
   // Cierra cualquier conexion a base de datos que el objeto pueda tener
   public function __sleep(){
      @mysql_close($this->conexion);
   }
   // Reestablecer cualquier conexion a base de datos que se pueda haber perdido
   public function __wakeup(){
      $this->conectar();
   }
   // Lista las tablas disponibles
   public function tablas(){
      $i=0;
      $a=@mysql_list_tables($this->bd);
      while($row=mysql_fetch_row($a))
         $array[$i++]=$row[0];
      return $array;
   }
   // Lista de los campos
   public function campos($variable){
      $i=0;
      $a = @mysql_query("SHOW COLUMNS FROM ".$variable);
      if (@mysql_num_rows($a) > 0)
         while ($row = @mysql_fetch_assoc($a))
            $array[$i++]=$row;
      else
	 error('La tabla no contiene campos');
      return $array;
   }

Ahora tratare de explicar como se usa el objeto: Crear objeto conector:



$objeto = new conector( ['localhost','base_datos','usuario','password'] )
</span><span><span style="color: #999999;">

Para mandar llamar a la clase, se debe tener en cuenta los tres métodos para inicial la conexión a la base de datos que tiene la clase. El primero no lleva ningún parámetro y se hace tal y como se muestra en el ejemplo. Los parámetros para esta conexión son tomados directamente de un archivo de configuracion que tendra definidas las variables: SERVIDOR, BD, USUARIO y CONTRASENA.



$objeto = new conector();</span></pre>
</blockquote>
También se pueden incluir parámetros, estos son 4 y serian [host,base de datos,usuario,constraseña], de esta manera puedes conectarte a múltiples bases de datos o servidores, con diferentes objetos.
<blockquote>
<pre><span style="color: #999999;">[sourcecode language='sql']
$objeto1 = new conector('127.0.0.1','base','usuario','clave'); // se conecta un servido
$objeto2 = new conector('255.1.1.2','otra_base','usuario2','clave2'); // se conecta a otro servidor
</span><span><span style="color: #999999;">

Recordemos que la clase maneja las conexiones, por lo cual abre y cierra las conexiones automáticamente optimizando así los recursos del servidor.

Ademas contiene dos funciones, una para ver las tablas, y otra para ver los campos de las tablas.



$objeto1->tablas();</span></pre>
<pre><span style="color: #999999;">$objeto1->campos($nombre_tabla);
</span><span><span style="color: #999999;">

Nota [010108]: Se agrego una comprobación de la conexión, por sugerencia del Ddaz.
Tags: , , ,


Leave a Reply

Designed by NattyWP Wordpress Themes.
Images by desEXign.