Clase para Conectar PHP Mysql con PDO


Última Actualización: 31/08/2022 19:03 Nro de Vistas: 11371


PHP Data ObjectsEn Realidad no se necesita hacer ninguna clase para una conexion de php.

Pero en mi caso, estuve buscando la forma de como cambiar las clases de adobd. Porque en realidad esa clase es muy buena pero muy, muy grande.

Había usado bastante esta clase en mis proyectos y ya era hora de actualizarlos.

Al buscar cual era la mejor forma de conectar a Mysql encontré que la mejor de todas era con PDO.


Todos mencionan que en primer lugar se debería Usar PDO. Asi que se me ocurrió cambiar mis conexiones con PDO pero en vista que yo usaba adobd era necesario crear una clase similar para no modificar "mucho" mis códigos.

 Seguramente la clase adobd tiene muchas mas funciones pero las que mas usaba son estas y por lo tanto e tratado de emularlo de modo que no altere todo mi proyecto.

La Conexion la hacemos de la siguiente forma. (casi igual q adobd)

class mysql {
    var $conexion;
    var $fechmode = PDO::FETCH_ASSOC;
    var $error;
	var $sql_query;
    var $sql_array;
	var $sql_row;
    function Connect($driver, $user, $pass){
		try {
			$this->conexion = new PDO($driver, $user, $pass);
		} catch (PDOException $e) {
			$this->error = $e->getMessage();
		}	
        return $this->conexion;
    }
	function ErrorInfo(){
		return $this->error;
	}
	
	function SetFetchMode($tipo){
		//FETCH_ASSOC o 	FETCH_NUM
		$this->fechmode = $tipo;
	}
	function Execute($sql,$array = NULL){
		$consulta = $this->conexion->prepare($sql);
		$consulta->setFetchMode($this->fechmode);
		$retorna = $consulta->execute($array);
		if(!$retorna){
			$errorinfo = $consulta->ErrorInfo();
			if(conf_debug){
			echo $errorinfo[2];
			}
		}else{
			$this->sql_query = $consulta;
			return $retorna;
		}
	}  
	
	function fetchrow(){
		return $this->sql_query->fetch();
	}
	function numrows(){
		return  $this->sql_query->rowCount();
	}
	function GetArray(){
		return $this->sql_query->fetchAll();
	}

}

$db = new mysql;
	$conexion1 =  $db->Connect('mysql:host='.conf_host.';dbname='.conf_dbase, conf_user, conf_pass);
	if(!$conexion1){
		echo 'No se puede Conectar la Base de Datos';
		exit();
	}

 El Codigo Anterior lo hacemos solo una vez. 

Ahora si podemos ejecutar nuestras consultas tantas veces como queramos de la siguiente forma.

<?php
//Para un registro
$sql = $db->Execute("SELECT dni, name FROM `users` WHERE `dni` = ? ",array('25252525');
$totalregistros = $db->numrows();
$row = $db->fetchrow();
$dni = $row['dni'];


//Para varios registros
//en el original adobd es foreach ( $sql->GetArray( ) as $HHFW => $row ){
//ahora solo $db o $db->GetArray( )
foreach ( $db->GetArray( ) as $HHFW => $row ){
	echo 'DNI Nro: '.$row['dni'];
}

 

Eso es Todo. Si alguien quiere mejorar esta clasesita es bienvenida las sugerencias.