src.where.values_sql_in - gamboamartin/where GitHub Wiki

values_sql_in

La función values_sql_in es una función privada que toma un array de valores, valida cada uno de ellos, y construye una cadena de valores SQL para su uso en una cláusula IN. La función garantiza que los valores estén correctamente formateados y separados por comas, agregando comillas simples alrededor de cada valor para proteger contra inyecciones SQL.

Signatura

private function values_sql_in(array $values): string|array

Parámetros

  • array $values:
    Un array de valores que se utilizarán para generar una lista de valores en una consulta SQL. Cada valor debe ser una cadena no vacía.

Retorna

  • string|array:
    Retorna una cadena que representa una lista de valores formateados para ser utilizados en una cláusula SQL IN. En caso de error, retorna un array de error generado por $this->error->error().

Explicación Detallada

  1. Inicialización de la cadena SQL:

    • La función comienza inicializando $values_sql como una cadena vacía, que se utilizará para construir la lista de valores.
  2. Iteración sobre los valores:

    • La función recorre cada elemento en el array $values, validando que no esté vacío y que sea un valor adecuado para una consulta SQL.
    • Si un valor está vacío, se genera un mensaje de error y se retorna un array con el mensaje de error.
  3. Validación y construcción del valor SQL:

    • Para cada valor, la función llama a value_coma() para determinar si es necesario agregar una coma antes del valor, en función de la cadena SQL existente.
    • Si ocurre un error durante este proceso, se genera un mensaje de error y se retorna un array con el mensaje de error.
  4. Protección contra inyecciones SQL:

    • La función utiliza addslashes() para escapar caracteres especiales en el valor, protegiendo la consulta contra posibles inyecciones SQL.
    • Cada valor se envuelve en comillas simples para formar un literal SQL seguro.
  5. Concatenación de los valores:

    • La función agrega el valor validado y formateado a la cadena $values_sql, precedido por la coma si es necesario.
  6. Retorno de la cadena SQL:

    • La función retorna la cadena $values_sql, que contiene todos los valores formateados y separados por comas.

Ejemplos

$values = ['100', '200', '300'];
$resultado = $this->values_sql_in($values);

// Resultado esperado:
// "'100', '200', '300'"
// Un array de error si ocurre algún problema.

Código de la Función

private function values_sql_in(array $values): string|array
    {
        $values_sql = '';
        foreach ($values as $value){
            $value = trim($value);
            if($value === ''){
                return $this->error->error(mensaje: 'Error value esta vacio',data: $value, es_final: true);
            }
            $data = $this->value_coma(value:$value, values_sql: $values_sql);
            if(errores::$error){
                return $this->error->error(mensaje: 'Error obtener datos de value',data: $data);
            }

            $value = addslashes($value);
            $value = "'$value'";

            $values_sql.="$data->coma$value";
        }
        return $values_sql;
    }