Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    sprintf e date_format carattere di escape consiglio ......

    Ciao.
    Voglio stampare una query con sprintf
    che ha al suo interno date_format
    una cosa del genere:
    Codice PHP:
    public function selectByDate2($flatdate){
            
    $querysprintf("SELECT c.category_title, p.category_ID,p.post_ID, p.post_title, p.post_preamble, p.post_content, p.post_date,u.user_name
            FROM posts AS p INNER JOIN categories AS c INNER JOIN users AS u
            ON p.category_ID = c.category_ID
            ON p.user_ID = u.user_ID WHERE  date_format(p.post_date, '%%Y%%m')='%d';"
    ,$this->db->escape($flatdate));
    echo 
    $query;
            
    $this->result=$this->db->query($query);
        } 
    Mi domandavo se è il giusto metodo
    Seguite lo stesso metodo ?

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  2. #2
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  3. #3
    Originariamente inviato da whisher
    ma se fai echo $query hai quello che ti aspetti?

    Se si, va bene, se no, non va bene. Secondo me non va bene altrimenti non avresti posto il problema.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Originariamente inviato da piero.mac
    ma se fai echo $query hai quello che ti aspetti?

    Se si, va bene, se no, non va bene. Secondo me non va bene altrimenti non avresti posto il problema.
    No, lo snippet works ma come dire non sono molto sicuro
    della scelta di fare l'escape in questo modo


    date_format(p.post_date, '%%Y%%m')='%d';"

    Ho aperto il thread per avere consigli/conferma

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5
    Originariamente inviato da whisher
    No, lo snippet works ma come dire non sono molto sicuro
    della scelta di fare l'escape in questo modo
    Ho aperto il thread per avere consigli/conferma

    mai usato sprintf per valorizzare una variabile. A che pro? Dove e' il vantaggio?

    date_format(p.post_date, '%%Y%%m')

    ti rende %Y%m

    che significa? il valore da tradurre e' quello in p.post_date, cioe' dal campo mica da una variabile esterna al db..... spiega quello che dovrebbe fare...

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    sprintf ti dà la possibiltà di 'sceglere'
    il tipo di variabile
    l'esempio + banale quello numerico
    Codice PHP:
    $querysprintf("SELECT title FROM posts WHERE id='%d'",10);
    echo 
    $query
    (Qui se utilizzi una stringa id diverrà 0)
    ma potresti utilizzare la stessa tecnica
    con tipi di dato + complessi
    praticamente una sorta di prepare statement.

    Nello specifico l'utilizzo è questo

    Codice PHP:
    $obj->selectByDate("200705"); 

    Dove il valore lo recupero tramite post
    lo utilizzo per una form come questa
    Codice PHP:
    <form action="/admin/edit.php" method="post" name="frm_show_by_date" id="frm_show_by_date"
    <
    fieldset id="fld_show_by_date"
    <
    legend class="generic-legend">Browse Month&hellip;</legend
    <
    select name="show-by-date" size="1" id="show-by-date"
    <
    option value="200706">June2007</option
    <
    option value="200705">May2007</option
    <
    option value="200704">April2007</option
    <
    option value="200703">March2007</option
    </
    select
    <
    input name="show-date" type="submit" value="Show Month" id="show-date"  /> 
    </
    fieldset
    </
    form
    Se non metto gli escapes sprintf mi dà errore

    too few arguments ...........

    Siccome la soluzione l'ho ricavata da un suggerimento
    di Thomas Breuss
    volevo sapere se il metodo è valido o no visto
    che non sono riuscito a trovare niente in proposito.





    PS
    Grazie per il suggerimento riguardo a date_format
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  7. #7
    Originariamente inviato da whisher
    Siccome la soluzione l'ho ricavata da un suggerimento
    di Thomas Breuss
    volevo sapere se il metodo è valido o no visto
    che non sono riuscito a trovare niente in proposito.


    Non ho detto che non serve, ho detto che non lo uso per valorizzare una variabile, ma a volte, poche per la verita', solo per formattare una stringa. Nella maggior parte dei casi richiede un maggior numero di righe di codice, e' poco leggibile (portabile), e' piu' complesso da debuggare in caso di errori.

    tutti i dati in arrivo da post o get sono delle stringhe e vanno verificati a prescindere da sprintf() vale di piu' forse usare un sql-mode strictly che ti obblighi a dei valori da immettere nel db ben precisi e che ti permettono un codice sql portabile per ogni dove, mentre sprintf ti lega al php se non addirittura allo specifica pagina di script.

    tieni presente che la mia risposta aveva come presupposto il date_format() con il doppio %% che non aveva molto senso ai fini dell'uso dello sprintf().

    poi, come ben sai, ognuno ha il suo stile e modo di scrivere del codice.... personalmente piu' e' chiaro e semplice, meglio e' per tutti.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Colgo l'occasione

    sql-mode strictly
    E' possibile settare il valore su
    un hosting non dedicato ?

    Sono venuto a conoscenza
    del strictly mode facendo un insert
    con '' invece di NULL
    mi puoi fornire qc links per approffondire
    il tutto (la cosa mi sembra molto interessante
    )


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  9. #9

  10. #10
    Thanks


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

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.