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 SQLIN
. En caso de error, retorna un array de error generado por$this->error->error()
.
Explicación Detallada
-
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.
- La función comienza inicializando
-
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.
- La función recorre cada elemento en el array
-
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.
- Para cada valor, la función llama a
-
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.
- La función utiliza
-
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.
- La función agrega el valor validado y formateado a la cadena
-
Retorno de la cadena SQL:
- La función retorna la cadena
$values_sql
, que contiene todos los valores formateados y separados por comas.
- La función retorna la cadena
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;
}