• User

    INSERT INTO in MySql con apici o doppie virgole.

    Ciao a tutti.
    Mi sto scervellando come molti altri utenti ad inserire in un campo del database un apostrofo.
    Ho letto diverse soluzioni, ma praticamente nessuna risolve del tutto il mio problema:

    Da un form prelevo la seguente variabile
    $cognome= $_POST[cognome];
    che in questo caso ammettiamo sia D'Orazio (che contiene appunto l'apostrofo).

    Come praticamente molti di voi sapranno, e' impossibile fare un INSERT TO con un apostrofo, altrimenti la stringa verrebbe troncata come CHIUSURA e quello che viene dopo (Orazio) andrebbe perso.
    Pertanto bisognerebbe TRASFORMARE questo apostrofo in qualche modo.
    Ho visto che esistono diversi modi per farlo: **replace **(sostituisce l'apice con doppio apice), **addslashes **(inserisce un \ prima dell'apostrofo), e per finire mysql_real_escape_string che DOVREBBE fare nel caso mio.

    Ecco quindi cosa ho aggiunto nel mio codice:
    $cognome= stripslashes($cognome); // per togliere eventuali slashes nella variabile
    $cognome= mysql_real_escape_string($cognome);

    Prima di procedere all' INSERT TO, ho voluto verificare questa variabile se e' corretta oppure no e quindi ho aggunto:
    echo "COGNOME= " . $cognome;

    ma stranamente vedo che la variabile e' diventata cosi:
    COGNOME= D'Orazio
    e quindi mysql_real_escape_string, che dovrebbe a quanto pare lasciare INTATTA la variabile, si e' comportata come **addslashes **.

    Detto questo, tutti questi comandi funzionerebbero (tutti fanno eseguire la query INSERT TO), ma inseriscono nel campo caratteri per me superflui (doppio apostrofo o slashes) che vorrei non siano presenti.

    Da tener presente invece che... in altre zone del mio sito (non fatte da me) questo comando funziona egregiamente.
    Infatti se vado a modificare/inserire un campo in questi form scrivendo una frase con apostrofo, viene tranquillamente inserita "COSI COME E'" nel database.

    Malgrado ho letto e riletto diverse sezioni di questo codice, non riesco ad uscirne fuori.
    Qualcuno sa aiutarmi? 🙂
    Grazie.


  • ModSenior

    Ciao criccroc,
    utilizza esclusivamente la funzione mysql_real_escape_string prima di effettuare la query in maniera tale non generi errori di sintassi, e nel database non verranno inseriti caratteri extra.


  • User Attivo

    Uhm... servirebbe vedere un po' più di codice, non è che hai magic quotes ON ?
    h t t p : //php.net/manual/en/security.magicquotes.php