Visualizzazione risultati 1 fino 22 di 22

Discussione: Errore nell'inserimento di una stringa! :(

  1. #1
    Guest

    Predefinito Errore nell'inserimento di una stringa! :(

    salve gente, perchè quando inserisco una stringa in una DB mi compare un \ dopo un apostrofoto? per esempio cos'è me lo scrive cos\'è :(
    Come posso risolvere ciò?
    vi stampo la riga di codice dove inserisco il valore:(
    inoltre quando vorrei scrivere qualcosa frà le virgolette tipo "cos'è" non mi salva un bel niente.
    Non capisco cosa possa essere visto che questo stesso codice in altri punti funziona perfettamente :(
    Codice PHP:
    // inserisco i valori
    $query=("INSERT INTO domanda (domanda,autore) VALUES ('$_POST[titolo]','$nic')");
    $result=mysql_query($query,$myconn) or die("Errore di inserimento titolo sondaggio");
    Ultima modifica di pazziperilgruppo : 24-12-2009 alle ore 03.23.56

  2. #2
    Guest

    Predefinito

    Codice:
    inoltre quando vorrei scrivere qualcosa frà le virgolette tipo "cos'è" non mi salva un bel niente.
    Quando scrivi qualcosa non puoi utilizzare semplicemente l'apostrofo o le virgolette, ma devi mettere un backslash davanti per far si che poi la parola cos'è venga visualizzata bene ed il codice non generi errori.

    cos'è lo scrivi in questo modo => cos\'è
    "ciao" lo scrivi in questo modo => \"ciao\"

    Se ad esempio hai una cosa del genere:
    Codice PHP:
    <?php
    $stringa
    = 'cos'è';
    ?>
    quell'apostrofo nel mezzo fa intendere che la stringa è stata chiusa dopo la parola cos.
    Invece devi scrivere:
    Codice PHP:
    <?php
    $stringa
    = 'cos\'è';
    ?>

    Volevi sapere questo?

  3. #3
    Guest

    Predefinito

    In ogni caso per risolvere basta usare la funzione stripslashes(), ad esempio:
    Codice PHP:
    <?php
    $var
    = 'cos\'è';
    echo
    stripslashes($var);
    ?>
    Visualizzerà: cos'è, senza backslash.

  4. #4
    Guest

    Predefinito

    grazie a tutti x le risposte.
    Le stringhe le passo attraverso il parametro post.
    Cosa strana è che se stampo i parametri con le stringhe
    Codice PHP:
    echo ("$_POST[stringa]");
    me li stampa correttamente e cos'è lo scrive senza / .
    Mentre se salvo il parametro POST nel database me lo salva con lo / .

    Grazie Alessandro1997 , grazie alla funzione stripslashes non mi stampa più il / .
    Però c'è il problema che quando provo a salvare qualcosa con gli apostrofi tipo "casa" scritto con l'apostrofo iniziale e finale non mi fà passare niente... :( che faccio?
    Ultima modifica di pazziperilgruppo : 24-12-2009 alle ore 13.23.01

  5. #5
    Guest

    Predefinito

    Li visualizza solamente se salvati nel database perché penso che sia abilitato il safe_mode. Comunque puoi risolvere il tuo secondo problema passando i valori alla funzione addslashes prima dell'inserimento nel database, così:
    Codice PHP:
    <?php
    $var
    = '"casa"';
    $var = addslashes($var);

    echo
    $var;
    ?>
    Questo esempio visualizzerà: \"casa\", e poi le formatti di nuovo con stripslashes() come spiegato sopra.

  6. #6
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    @alessandro1997:
    non dipende dal safe_mode.

    @pazziperilgruppo:
    Quando devi inserire qualcosa nel database si deve "pulire" la variabile da alcuni caratteri e devi fare così:
    Codice PHP:
    $q = $_POST['stringa'];
    $query_sql = "INSERT INTO tabella(campo) VALUES('".mysql_real_escape_string($q)."')";

  7. #7
    Guest

    Predefinito

    Oppure con addslashes come ho spiegato poco fa, anche se solitamente io uso mysql_real_escape_string (o il suo equivalente in mysqli).

    @andreafallico: e da cosa, allora?

  8. #8
    Guest

    Predefinito

    L'ho messo così
    Codice PHP:
    $tit = addslashes($_POST[titolo]);
    //14 ora inserisco i valori
    $query=("INSERT INTO domanda (domanda,autore) VALUES ('$tit','$nic')");
    $result=mysql_query($query,$myconn) or die("Errore di inserimento titolo sondaggio");
    ma nel database mi salva una semplice / senza il resto delle parole :(

  9. #9
    Guest

    Predefinito

    Strano... allora prova con mysql_real_escape_string() e vedi cosa viene fuori.

  10. #10
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Ma ragazzi avete letto bene? Lui vuole togliere gli slash davanti agli apostrofi quindi deve utilizzare la funzione inversa, ovvero stripslashes().

    @pazziperilgruppo prova così:

    Codice PHP:
    $tit = stripslashes($_POST['titolo']);
    //14 ora inserisco i valori
    $query=("INSERT INTO domanda (domanda,autore) VALUES ('".$tit."','".$nic."')");
    $result=mysql_query($query,$myconn) or die("Errore di inserimento titolo sondaggio");
    Apprezzi l'aiuto? Offrimi un caffè!

  11. #11
    Guest

    Predefinito

    Allora gente XD si miky ha ragione volevo un modo x salvare le stringhe senza / nel database, ma la soluzione di alessandro mi andava pure bene.
    Cmq il mio secondo problema quello di salvare parola frà doppi apici tipo "casa" persiste ancora :( cn le istruzione che mi avete suggerito mi salva nel database solo / nnt di più

  12. #12
    Guest

    Predefinito

    Se elimini i backslash nell'inserimento dei dati nel DB basta inserire un apice e la query restituirà errore. Potresi sapere perchè li devi eliminare?

  13. #13
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Allora devi utilizzare htmlspecialchars e risolvi subito il tuo problema cogliendo due piccioni con una fava.

    Codice PHP:
    $tit = htmlspecialchars($_POST['titolo']);
    //14 ora inserisco i valori
    $query=("INSERT INTO domanda (domanda,autore) VALUES ('".$tit."','".$nic."')");
    $result=mysql_query($query,$myconn) or die("Errore di inserimento titolo sondaggio");
    Apprezzi l'aiuto? Offrimi un caffè!

  14. #14
    Guest

    Predefinito

    xkè quando stampo il titolo che salvo nel database non voglio che compaiano le backslash.

    Anche se ora il mio problema è un altro. il salvataggio di stringhe con doppi apici. :(
    -
    Edit:
    Citazione Originalmente inviato da miki92 Visualizza messaggio
    Allora devi utilizzare htmlspecialchars e risolvi subito il tuo problema cogliendo due piccioni con una fava.

    Codice PHP:
    $tit = htmlspecialchars($_POST['titolo']);
    //14 ora inserisco i valori
    $query=("INSERT INTO domanda (domanda,autore) VALUES ('".$tit."','".$nic."')");
    $result=mysql_query($query,$myconn) or die("Errore di inserimento titolo sondaggio");
    Mi duole dirlo ... ma nel database quando inserisco parole in doppi apici mi dà lo stesso errore

    Ho scritto cos'è "boh" e mi ha salvato cos\'è \
    Ultima modifica di darkwolf : 24-12-2009 alle ore 14.11.03

  15. #15
    Guest

    Predefinito

    Ma cosa ti cambia se li salva con i \ e te li mostra senza quando li estrai? Che ragionamento insensato

  16. #16
    Guest

    Predefinito

    XD ci siamo fraintesi , inizialmente non sapevo che salvando le parole con le / c'era la possibilità di stamparli senza, per questo inizialmente ho chiesto come salvarli senza /. Poi la risposta di alessandro mi è andata pure bene cioè di usare una funzione che quando stampa il titolo toglie gli /.
    Ora però risolto questo problema, vorrei poter salvare nel database parola frà doppi apici, solo che non mi salva niente tranne un /

  17. #17
    Guest

    Predefinito

    Ti stai complicando la vita. Non sei la prima persona che utilizza il DB per salvare frasi o testi. Utilizza il codice postato da michi per l'inserimento e poi le funzioni standard (mysql_fetch_array/row()) per l'estrazione.

  18. #18
    Guest

    Predefinito

    Questa discussione inizia a diventare ridicola. Non capisco dove è il problema. Hai bisogno di inserire una stringa nel database?
    Codice PHP:
    $stringa = '"ciao"';
    $stringa = addslashes($stringa);
    // esegui la query...
    La devi recuperare?
    Codice PHP:
    // recuperi e salvi in $stringa
    $stringa = stripslashes($stringa);
    echo
    $stringa;
    Cosa è che non funziona?

  19. #19
    Guest

    Predefinito

    Lui non vuole salvare nel DB le stringhe con gli escape e non ne ho ancora capito il motivo!

  20. #20
    Guest

    Predefinito

    No, leggendo più su ho capito che si era espresso male. Comunque, nel caso voglia ancora salvarle senza le backslash, ti spiego anche perché: perché è così e basta!

  21. #21
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Senti pazzoperilgruppo qui si sta creando un po' di confusione e non dovuta solo a te...allora...se usi il seguente codice:

    Codice PHP:
    //14 ora inserisco i valori
    $query=("INSERT INTO domanda (domanda,autore) VALUES ('".htmlspecialchars(stripslashes($_POST['titolo']))."','".htmlspecialchars($nic)."')");
    $result=mysql_query($query,$myconn) or die("Errore di inserimento titolo sondaggio");
    Memorizzerai nel database tutto ciò che vuoi senza slash e come lo vuoi.

    Cioè se $_POST['titolo'] contiene Ciao questa è una "prova"? nel database verrà memorizzato Ciao questo &egrave; una &quot;prova&quot;?.

    Ciò perchè utilizzi htmlspecialchars(), per fare in modo che, quando stampi il testo, torni tutto com'era dovrai utilizzare htmlspecialchars_decode() (se utilizzi PHP5) o html_entity_decode() (se utilizzi PHP4).
    Apprezzi l'aiuto? Offrimi un caffè!

  22. #22
    Guest

    Predefinito

    ok grazie a tutti tutto risolto xD e scusate se ho causato confusione ^^"

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •