|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Nov 2005
Città: Torino
Messaggi: 289
|
PHP - problema con apici singoli
Ho un problema con php e mysql.
Ho un form con dei campi di input e tramite delle funzioni faccio l'inserimento, il recupero e l'aggiornamento di ciò che è stato digitato dall'utente nel database. Tutto mi funziona se in tali campi di input non inserisco gli apici singoli. Girando per la rete ho visto che esistono le funzioni mysql_escape_string e addslashes (per aggiungere i \ prima degli apici) e stripslashes per toglierli. Se nel campo di input digito c'è, nel database viene inserito correttamente (c\'è) mentre quando lo recupero dalla pagina in php (usando stripslashes) mi viene visualizzata solo la c
__________________
Toshiba Satellite A100-926: Intel Core 2 Duo T7200, 2 GB ram ddr2, ATI MOBILITY RADEON X1600 512 MB Hypermemory (256 MB+256 MB) |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Se
Codice PHP:
Codice:
<input type='text' name='ciao' value='<?= $value ?>'> Codice:
<input type='text' name='ciao' value='c'è'> 1) value è 'c' 2) "è" diventa una sorta di attributo 3) il codice html che segue non si vedrà fino a quando non c'è un altro ' Se tu usi i doppi apici: Codice:
<input type="text" name="ciao" value="c'è"> ![]() PS: nel database non dovrebbe apparire come c\'è. Questo vuol dire che il valore è stato "escapato" 2 volte: non dovrebbe essere necessario usare stripslashes dai dati dal database. |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Nov 2005
Città: Torino
Messaggi: 289
|
Il problema si presenta quando devo recuperare i dati dal database mysql.
Se io nel campo di input della pagina php digito per esempio nell' '800 c'era e "dò in pasto" il contenuto del campo alla funzione che deve farmi la insert o l'upload mi compare quest'errore: Errore di sintassi nella query SQL vicino a '800 c'era' WHERE id=... linea 1, ciò non si verifica se prima di eseguire la query uso $var_mod = mysql_escape_string($var) dove $var è il contenuto del campo di input, la query viene eseguita correttamente e nella tabella viene inserito nell' '800 c'era con tutti gli apici. Quando voglio estrarre i dati dalla tabella e lo inserisco nel campo input come value (come giustamente dicevi) non mi viene visualizzata tutta la stringa, ma solo nell .
__________________
Toshiba Satellite A100-926: Intel Core 2 Duo T7200, 2 GB ram ddr2, ATI MOBILITY RADEON X1600 512 MB Hypermemory (256 MB+256 MB) |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Io sinceramente uso sempre la funzione htmlentities con l'opzione ENT_QUOTES, l'unica cosa è che aumenta un po' la dimensione dei dati presenti nel database...
|
![]() |
![]() |
![]() |
#5 | |
Member
Iscritto dal: Nov 2005
Città: Torino
Messaggi: 289
|
Quote:
![]()
__________________
Toshiba Satellite A100-926: Intel Core 2 Duo T7200, 2 GB ram ddr2, ATI MOBILITY RADEON X1600 512 MB Hypermemory (256 MB+256 MB) |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:32.