Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    4

    passare un array ad sprintf()

    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.

  2. #2
    Studiati questo codice:

    Codice PHP:
    <?php 

    $array 
    range(13);

    $params array_merge(array('%d %d %d'), $array);
    $string call_user_func_array('sprintf'$params);

    echo 
    $string;

    ?>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.