Hola,
Resulta que estoy utilizando esta clase para la conexión con la BD y realizar consultas
https://gist.github.com/Klerith/5fdb98e266ff3449f2ed Código PHP:
<?
// ======================================================
// 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;
}
}
?>
El problema radica en que el servidor tiene deshabilitado el módulo de mysqli y no hay opcioón alguna para habilitarlo.
La pregunta es, como puedo usar las funciones de mysql nativas en esta clase, para no modificar el código. Hice algunos intentos pero no tengo los conocimientos suficientes como para realizarlo. Cualquier orientación es bienvenida. Gracias