Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505

    mysql_real_escape_string() viene memorizzata nel database?

    salve. ho notato questa piccola cosa :

    se prendo dati da una input box=text per esempio, e la stringa è 'ciao mario' (apici inclusi), senza la funzione mysql_real_escape_string() ovviamente non la inserisce nel database (non fà l'escape sull'apice).

    se eseguo questa funzione, la salva nel database. ho notato anche però che se io recupero il dato dal database (quindi mi preleva la stringa 'ciao mario')e la ributto dentro con un update, non facendo mysql_real_escape_string() funziona. com'è possibile? nel database salva i caratteri di escape? non credo, perchè se visualizzo il dato non li vedo.

    Codice PHP:
    $query mysql_query("SELECT itemid, atl FROM items",$mydb);
    while (
    $row mysql_fetch_array($queryMYSQL_NUM)) {
            
    $itemz=$row[0];
        
    $newatl=trim($row[1]);
        
    $update mysql_query("UPDATE items SET atl = '$newatl' WHERE itemid = '$itemz'",$mydb);        

    questo non dovrebbe funzionare, perchè dovrebbe ritornare a galla il problema dell'escape quando recupera la stringa nel database per poi ributtarla.
    N.B. nel mio esempio atl è dove salvo la stringa. quindi dovrebbe essere atl = ' 'ciao mario' ', e dovrebbe fallire senza richiamare la mysql_real_escape_string($newatl) no?

    saluti e grazie

  2. #2
    credo che l'update ti dia un errore che non rilevi e che quindi il contenuto della tabella rimanga inalterato tale e quale si trova al momento della select

    prova ad usare mysql_error()

    per vedere cosa effettivamente tenti di inserire stampa la query update

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    ciao. grazie per la risposta. avevi ragione, non è che facesse l'update, ignorava le query
    grazie per mille per la delucidazione (potevo anche pensarci a questa cosa).
    sbagliando s'impara!
    ciao e grazie ancora.

    p.s. visto che ci sono ne approfitto per un ulteriore delucidazione :

    perchè se scrivo :

    Codice PHP:
        $atl[$nrt]=mysql_real_escape_string($atl[$nrt]);
        
    $atl[$nrt]=utf8_encode($atl[$nrt]);
            
    $atl[$nrt]=trim($atl[$nrt]); 
    non mi toglie il carattere a fine stringa, e se invece scrivo :

    Codice PHP:
        $atl[$nrt]=trim($atl[$nrt]);
        
    $atl[$nrt]=mysql_real_escape_string($atl[$nrt]);
        
    $atl[$nrt]=utf8_encode($atl[$nrt]); 
    me lo toglie? cioè se metto il trim() prima dell'utf8 và altirmenti no. aggiunge delle informazione alla fine per caso?

    saluti

  4. #4
    forse molto semplicemente perche' utf8_encode agisce anche sullo spazio e quindi non sara' piu' uno "spazio fisico" riconosciuto da trim() ma una valore codificato.

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    uhm, può essere. però da quanto ne sò la codifica utf8 agisce dopo un determinato range di caratteri (quelli ascii standart per esempio non li codifica). e credo che lo spazio rientri tra i primi 255 no? anche perchè sul database i caratteri codificati li riconosco (aggiunge dei numeri strani per alcuni valori), mentre sugli spazi singoli vedo semplicemente lo spazio e nessuna codifica. strano...

    e comunque ho notato che se prima inserisco la stringa con lo spazio alla fine (senza trim) utilizzando prima mysql_real_escape_string() e poi la codifica utf8 (quindi in teoria con lo spazio finale codificato), poi la prendo dal database, applico il trim (quindi anche se la pagina html è <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> non dovrebbe avvenire nessuna re-codifica, visto che rimango lato server con elaborazioni php) e noto che toglie effettivamente lo spazio (che a quel punto dovrebbe essere ancora codificato in utf8).

    anche questo mi lascio un pò perplesso..

    grazie mille per il supporto

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.