Created
September 13, 2018 00:49
-
-
Save intelguasoft/cae058b9c268e7de322512c4a857a4aa to your computer and use it in GitHub Desktop.
PHP: class.Database.inc
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? | |
// ====================================================== | |
// Clase: class.Database.php | |
// Funcion: Se encarga del manejo con la base de datos | |
// Descripcion: Tiene varias funciones muy útiles para | |
// el manejo de registros. | |
// | |
// Ultima Modificación: 17 de marzo de 2015 | |
// ====================================================== | |
class Database{ | |
private $_connection; | |
private $_host = "localhost"; | |
private $_user = "caphum_user"; | |
private $_pass = "AHAcL3SLuEawwVaW"; | |
private $_db = "capitalhumano_db"; | |
// Almacenar una unica instancia | |
private static $_instancia; | |
// ================================================ | |
// Metodo para obtener instancia de base de datos | |
// ================================================ | |
public static function getInstancia(){ | |
if(!isset(self::$_instancia)){ | |
self::$_instancia = new self; | |
} | |
return self::$_instancia; | |
} | |
// ================================================ | |
// Constructor de la clase Base de datos | |
// ================================================ | |
public function __construct(){ | |
$this->_connection = new mysqli($this->_host,$this->_user,$this->_pass,$this->_db); | |
// Manejar error en base de datos | |
if (mysqli_connect_error()) { | |
trigger_error('Falla en la conexion de base de datos'. mysqli_connect_error(), E_USER_ERROR ); | |
} | |
} | |
// Metodo vacio __close para evitar duplicacion | |
private function __close(){} | |
// Metodo para obtener la conexion a la base de datos | |
public function getConnection(){ | |
return $this->_connection; | |
} | |
// Metodo que revisa el String SQL | |
private function es_string($sql){ | |
if (!is_string($sql)) { | |
trigger_error('class.Database.inc: $SQL enviado no es un string: ' .$sql); | |
return false; | |
} | |
return true; | |
} | |
// ================================================== | |
// Funcion que ejecuta el SQL y retorna un ROW | |
// Esta funcion esta pensada para SQLs, | |
// que retornen unicamente UNA sola línea | |
// ================================================== | |
public function get_Row($sql){ | |
if(!self::es_string($sql)) | |
exit(); | |
$db = DataBase::getInstancia(); | |
$mysqli = $db->getConnection(); | |
$resultado = $mysqli->query($sql); | |
if($row = $resultado->fetch_assoc()){ | |
return $row; | |
}else{ | |
return array(); | |
} | |
} | |
// ================================================== | |
// Funcion que ejecuta el SQL y retorna un CURSOR | |
// Esta funcion esta pensada para SQLs, | |
// que retornen multiples lineas (1 o varias) | |
// ================================================== | |
public function get_Cursor($sql){ | |
if(!self::es_string($sql)) | |
exit(); | |
$db = DataBase::getInstancia(); | |
$mysqli = $db->getConnection(); | |
$resultado = $mysqli->query($sql); | |
return $resultado; // Este resultado se puede usar así: while ($row = $resultado->fetch_assoc()){...} | |
} | |
// ================================================== | |
// Funcion que ejecuta el SQL y retorna un jSon | |
// data: [{...}] con N cantidad de registros | |
// ================================================== | |
public function get_json_rows($sql){ | |
if(!self::es_string($sql)) | |
exit(); | |
$db = DataBase::getInstancia(); | |
$mysqli = $db->getConnection(); | |
$resultado = $mysqli->query($sql); | |
// Si hay un error en el SQL, este es el error de MySQL | |
if (!$resultado ) { | |
return "class.Database.class: error ". $mysqli->error; | |
} | |
$i = 0; | |
while($row = $resultado->fetch_assoc()){ | |
$registros[$i]= $row; | |
$i++; | |
}; | |
return json_encode( array('data' => $registros ) ); | |
} | |
// ================================================== | |
// Funcion que ejecuta el SQL y retorna un jSon | |
// de una sola linea. Ideal para imprimir un | |
// Query que solo retorne una linea | |
// ================================================== | |
public function get_json_row($sql){ | |
if(!self::es_string($sql)) | |
exit(); | |
$db = DataBase::getInstancia(); | |
$mysqli = $db->getConnection(); | |
$resultado = $mysqli->query($sql); | |
// Si hay un error en el SQL, este es el error de MySQL | |
if (!$resultado ) { | |
return "class.Database.class: error ". $mysqli->error; | |
} | |
if(!$row = $resultado->fetch_assoc()){ | |
return "{}"; | |
} | |
return json_encode( $row ); | |
} | |
// ==================================================================== | |
// Funcion que ejecuta el SQL y retorna un valor | |
// Ideal para count(*), Sum, cosas que retornen una fila y una columna | |
// ==================================================================== | |
public function get_valor_query($sql,$columna){ | |
if(!self::es_string($sql,$columna)) | |
exit(); | |
$db = DataBase::getInstancia(); | |
$mysqli = $db->getConnection(); | |
$resultado = $mysqli->query($sql); | |
// Si hay un error en el SQL, este es el error de MySQL | |
if (!$resultado ) { | |
return "class.Database.class: error ". $mysqli->error; | |
} | |
$Valor = NULL; | |
//Trae el primer valor del arreglo | |
if ($row = $resultado->fetch_assoc()) { | |
// $Valor = array_values($row)[0]; | |
$Valor = $row[$columna]; | |
} | |
return $Valor; | |
} | |
// ==================================================================== | |
// Funcion que ejecuta el SQL de inserción, actualización y eliminación | |
// ==================================================================== | |
public function ejecutar_idu($sql){ | |
if(!self::es_string($sql)) | |
exit(); | |
$db = DataBase::getInstancia(); | |
$mysqli = $db->getConnection(); | |
if (!$resultado = $mysqli->query($sql) ) { | |
return "class.Database.class: error ". $mysqli->error; | |
}else{ | |
return $resultado; | |
} | |
return $resultado; | |
} | |
// ==================================================================== | |
// Funciones para encryptar y desencryptar data: | |
// crypt_blowfish_bydinvaders | |
// ==================================================================== | |
function crypt($aEncryptar, $digito = 7) { | |
$set_salt = './1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; | |
$salt = sprintf('$2a$%02d$', $digito); | |
for($i = 0; $i < 22; $i++) | |
{ | |
$salt .= $set_salt[mt_rand(0, 22)]; | |
} | |
return crypt($aEncryptar, $salt); | |
} | |
function uncrypt($Evaluar, $Contra){ | |
if( crypt($Evaluar, $Contra) == $Contra) | |
return true; | |
else | |
return false; | |
} | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment