Las respuestas con func_get_args() funcionarán bien para parámetros que no sean de referencia. Sin embargo, hay un truco para que los parámetros pasados por referencia funcionen. Además, no es técnicamente una función que acepta parámetros ilimitados, sino simplemente un número arbitrariamente grande, digamos cien.
Lo que puede hacer, es definir una función que tome una gran cantidad de argumentos, y que de manera predeterminada sean nulos. Luego, dentro de esa función, agregue cada referencia no nula a una matriz, que luego se usaría para llamar a * bind_param() * usando * call_user_func_array() *.
function my_bind_param(&$stmt, $types, &$arg1, &$arg2 = null, &$arg3 = null, ...)
{
$vars = array($types);
$vars[] = $arg1;
if ($arg2 != null)
$vars[] = &$arg2;
if ($arg3 != null)
$vars[] = &$arg3;
...
if (!call_user_func_array(array($stmt, "bind_param"), $vars))
{
if ($stmt->errno == 0)
return array(-1, "Unknown error binding parameters.");
else
return array(-1, "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error);
}
return array(0, "");
}
El verdadero truco es que no quieres escribir esto a mano. Simplemente crea otro script que genere el cuerpo de esta función (todo entre corchetes) como * my_bind_param_body.php *. Luego, simplemente defina el encabezado de la función en su archivo principal, e incluya el cuerpo en esa definición de función. decir
function my_bind_param(&$stmt, $types, &$arg1, &$arg2 = null, &$arg3 = null, ...)
{
return include "my_bind_param_wrapper_body.php";
}
no se puede hacer sin esfuerzos laboriosos. Sugeriría construir una consulta de la manera habitual, o pasar a PDO si quieres declaraciones nativas preparadas a toda costa. Tienen bindValue, te importa –
Gracias por la información. Desafortunadamente PDO parece ser excesivo, con aún más esfuerzo y repetición, en comparación con simplemente escribir mis propias cosas simples. –
Para cosas simples puedes usar una lib de mi información de usuario.Sin embargo es muy simple. –