administrador.base.orm.modelo_base.ejecuta_sql.21.5.0 - gamboamartin/administrador GitHub Wiki
ejecuta_sql
Esta función pública se encarga de ejecutar una consulta SQL en la base de datos y proporcionar información detallada sobre la ejecución de la consulta.
Signatura
final public function ejecuta_sql(string $consulta): array|stdClass
Parámetros
_$consulta (string): La consulta SQL que se desea ejecutar en la base de datos.
Retorna
-
array|stdClas: Un arreglo o un objeto que contiene información detallada sobre la ejecución de la consulta. El formato de los datos de retorno varía según el resultado de la ejecución de la consulta y puede incluir lo siguiente:
-
- mensaje: Un mensaje indicando el resultado de la ejecución de la consulta.
-
- sql: La consulta SQL que se ejecutó.
-
- result: El resultado de la ejecución de la consulta.
-
- registro: Información del registro asociado a la ejecución de la consulta.
-
- registro_id: El ID del registro afectado por la ejecución de la consulta.
-
- salida: Indicador de éxito o fracaso de la ejecución de la consulta.
Explicación Detallada
- Esta función recibe una consulta SQL como parámetro y la ejecuta en la base de datos.
- Si la consulta está vacía, se devuelve un error.
- Se utiliza un bloque try-catch para capturar cualquier excepción que pueda ocurrir durante la ejecución de la consulta.
- Si la consulta es un INSERT, se actualiza el ID del registro asociado.
- Se crea un objeto stdClass que contiene información detallada sobre la ejecución de la consulta, incluyendo mensajes, la consulta SQL, el resultado de la ejecución, información del registro y el ID del registro afectado.
- Se devuelve el objeto creado con la información detallada.
Ejemplos
// Creación de objeto
$objeto = new modelo_base();
// Caso 1: Ejecutar una consulta SQL con éxito
$consulta = "SELECT * FROM tabla";
$resultado = $objeto->ejecuta_sql($consulta);
// $resultado contendrá un objeto stdClass con información detallada sobre la ejecución de la consulta
// Caso 2: Intentar ejecutar una consulta SQL vacía
$consulta_vacia = "";
$resultado = $objeto->ejecuta_sql($consulta_vacia);
/*
$resultado contendrá un arreglo con un mensaje de error indicando que la consulta está vacía
*/
// Caso 3: Intentar ejecutar una consulta SQL con error
$consulta_con_error = "SELECT * FROM tabla_inexistente";
$resultado = $objeto->ejecuta_sql($consulta_con_error);
/*
$resultado contendrá un arreglo con un mensaje de error indicando el fallo al ejecutar la consulta
*/
Código de la Función
final public function ejecuta_sql(string $consulta):array|stdClass{
if($consulta === ''){
return $this->error->error(mensaje: "Error consulta vacia", data: $consulta.' tabla: '.$this->tabla,
aplica_bitacora: true, es_final: true);
}
try {
$result = $this->link->query( $consulta);
}
catch (Throwable $e){
return $this->error->error(mensaje: 'Error al ejecutar sql '. $e->getMessage(),
data: array($e->getCode().' '.$this->tabla.' '.$consulta.' '.$this->tabla,
'registro'=>$this->registro),aplica_bitacora: true,es_final: true);
}
if($this->transaccion ==='INSERT'){
$this->campo_llave === "" ? $this->registro_id = $this->link->lastInsertId() :
$this->registro_id = $this->registro[$this->campo_llave];
}
$mensaje = 'Exito al ejecutar sql del modelo '.$this->tabla. ' transaccion '.$this->transaccion;
$data = new stdClass();
$data->mensaje = $mensaje;
$data->sql = $consulta;
$data->result = $result;
$data->registro = $this->registro;
$data->registro_id = $this->registro_id;
$data->salida = 'exito';
return $data;
}