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;
    }