Ver Mensaje Individual
  #10 (permalink)  
Antiguo 12/01/2016, 20:25
x_atrix
 
Fecha de Ingreso: enero-2016
Mensajes: 71
Antigüedad: 8 años, 4 meses
Puntos: 14
Respuesta: real_escape_string Problema

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(23); // Devuelve 5
suma(23456// 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);