Cosa fuera de tema pero igual te viene bien. Viendo el codigo, solo vas a tener 1, 2, 3, 4, 8, 10 o 14 parametros ... no puedes tener 7 ni 22 :) ok ok ...
Igual te vendría bien saber que en php 5.6.x puedes usar "..." para indicar que el parametro se puede repetir las veces que haga falta y de la misma forma puedes pasar esto datos al siguiente metodo.
Ejemplos:
Código PHP:
function suma(...$numeros) {
$resultado = 0;
foreach ($numeros as $numero) {
$resultado += $numero;
}
return $resultado;
}
// Llamadas a la funcion suma
suma(2, 3); // Devuelve 5
suma(2, 3, 4, 5, 6) // Devuelve 20
Pero puedes usar este array (en el ejemplo $numeros) para pasarlo a bind_param.
Ejemplo:
Código PHP:
// Bueno, quitando el escape ... no tiene sentido aqui
$stmt->bind_param(...$escapar_datos); // Le pasa todos, ya sean 7, 22, 1, 4, 8, 10 o 14 como lo tienes definido
El tipo "$type" sabes como sacarlo usando el mismo bucle que estabas utilizando.
Con esto eliminas todo el codigo de ifs / else ifs con lineas de 14 parametros.
Y quedaria muchisimo mas limpio asi:
Código PHP:
function eliminar_nuevos_datos($conexion, $consulta, $id_insert, ...$escapar_datos) {
// Create connection
require($_SERVER['DOCUMENT_ROOT'] . $conexion);
$SQL_datos_conexion = new mysqli($db_host, $db_user, $db_pass, $db_name);
//Si se quiere escapar los datos
if ($escapar_datos != false) {
$stmt = $SQL_datos_conexion->prepare($consulta);
// Saber si es string o numerico(int)
$type = '';
foreach ($escapar_datos as $value) {
$type .= is_numeric($value) ? 'i' : 's';
}
$stmt->bind_param($type, ...$escapar_datos);
$stmt->execute();
if ($id_insert == true) {
//Retornar numero de celdas afectadas e ID del registro
$n_celdas = $stmt->affected_rows;
$id_registro = $stmt->insert_id;
return array($n_celdas, $id_registro);
} else {
//Retornar numero de celdas afectadas
return $stmt->affected_rows;
}
$stmt->close();
} else {
mysqli_query($SQL_datos_conexion, $consulta);
}
mysqli_close($SQL_datos_conexion);
}