Ciao a tutti,
devo richiamare la funzione sprintf ma non so in anticipo quanti parametri devo passargli,
siccome qualche giorno fa ho aperto una discussione simile e nonostante gli aiuti mi sono bloccato di nuovo faccio prima a spiegare cosa voglio fare.
Vorrei creare una funzione che mi cmponga tramite la sprintf una query eseguendo l'escape dei parametri passati.
esempio:
Codice PHP:
function escapequery()
{
// RECUPERO IL NUMERO DI ARGOMENTIO PASSATI
$argomenti=func_num_args();
// CREO L'ARRAY CONTENENTE GLI ARGOMENTI
$arg_list=func_get_args();
$query=sprintf("%s",$arg_list[0]);
// ESEGUO L'ESCAPE DAL SECONDO VALORE FINO ALL'ULTIMO
for($i=1;$i<$argomenti;$i++)
{
$arg_list[$i]=mysql_real_escape_string($arg_list[$i]);
}
// IL PROBLEMA STA QUI QUANDO DEVO RIASSEMBLARE IL TUTTO
$query=sprintf($query,$arg_list[1]);
}
Se io richiamo la funzione come sotto, tutto funziona
Codice PHP:
$query=escapequery("SELECT * FROM tabella WHERE id='%s';",$id);
Ma se voglio comporre una query che necessita di più parametri, e richiamassi la funzione a questo modo:
Codice PHP:
$query=escapequery("SELECT * FROM tabella WHERE id='%s' AND nome='%s' AND numero='%s'",$id,$nome,numero);
dovrei modificare la funzione
nella parte dove la query viene riassemblata,
ad esempio ci vorrebbe
Codice PHP:
$query=sprintf($query,$arg_list[1],$arg_list[2]);
oppure
Codice PHP:
$query=sprintf($query,$arg_list[1],$arg_list[2],$arg_list[3],$arg_list[4]);
Ho provato a passare l'array intero ad sprintf
Codice PHP:
$query=sprintf($arg_list[]);
ma non funziona
Non so se sono stato chiaro, se ho scritto cavolate scusatemi non sono un esperto di programmazione.