- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Problema campi MySQL contenenti apici. Come scrivere il record?
-
Problema campi MySQL contenenti apici. Come scrivere il record?
Ciao ragazzi
Ho realizzato una pagina PHP che legge da un database MySQL tutte le nazioni, regioni, province e città del mondo.
Ho codificato tutto con UTF-8 (database, tabella, pagina PHP, codifica HTML) e ho pure messo mysql_set_charset('utf8') e anche mysql_query("SET NAMES 'UTF8'")...
Riesco a leggere tutto correttamente, ma non riesco a scrivere il valore appena letto su un'altra tabella (anch'essa codificata con UTF-8) quando in mezzo al valore appena letto ci sono degli apici.
Ecco degli esempi:
'Ayn ad-Dafla
'Ayn Tīmū?anatHo provato a risolvere la cosa inserendo la funzione $regione=addslashes($regione) ma non cambia nulla.
Qualcuno sa indicarmi dove sbaglio?
Qualche suggerimento?Grazie a tutti
-
potresti postare la query SQL e l'errore riportato?
Se sono gli apici, basta l'addslashes.
-
Io di solito utilizzo la codifica iso-8859-1.
In ingresso nel DB i dati vengono "strippat" con mysql_real_escape_string.
In uscita invece effettuo un semplice stripslashes().
Non incontro nessu problema per quanto riguarda le accentate!
-
Eccoti accontentato
Questo è il codice per la lettura del dato:
<meta http-equiv=â??Content-Typeâ?? content=â??text/html; charset="UTF-8" /> <?php //Mi collego al database $connessione=mysql_connect($host,$user,$password) or die ("Impossibile connettersi al server $host"); mysql_select_db($database,$connessione) or die ("Errore di connessione al database $database"); //Dico a MySQL quale codifica usare per salvare i dati nel database mysql_set_charset('utf8'); mysql_query("SET NAMES 'UTF8'"); //Prelevo il nome della città $citta = "SELECT city FROM cities WHERE country='$nazione' ORDER BY city ASC"; $result = mysql_query($citta,$connessione); while($citta = mysql_fetch_array($result)) { echo "<option value='".$citta[0]."'>".$citta[0]."</option>"; } echo ' </select>'; ?>
...questo il codice per la scrittura del dato (che si trova in un'altra pagina, il dato arriva tramite POST):
<meta http-equiv=â??Content-Typeâ?? content=â??text/html; charset="UTF-8" /> <?php //Mi collego al database $connessione=mysql_connect($host,$user,$password) or die ("Impossibile connettersi al server $host"); mysql_select_db($database,$connessione) or die ("Errore di connessione al database $database"); //Dico a MySQL quale codifica usare per salvare i dati nel database mysql_set_charset('utf8'); mysql_query("SET NAMES 'UTF8'"); $citta = addslashes($citta); $citta = mysql_real_escape_string($citta,$db); //Scrivo la cittÃ* scelta sulla tabella delle ricerche $update = mysql_query("UPDATE ricerca SET citta='$citta' WHERE id='$id_utente'");
Come vedi ho usato sia addslashes e sia mysql_real_escape_string ma l'errore di salvataggio c'è sempre.
Insomma, il campo viene salvato nel record ma non viene salvato per intero!
Infatti se la città di chiama ad esempio Qal'eh-ye Naw verrà scritto nel db solo la parte prima dell'apice cioè Qal...Com'è possibile?
Dove sbaglio?Grazie ancora per l'aiuto
-
@Amistat said:
Io di solito utilizzo la codifica iso-8859-1.
In ingresso nel DB i dati vengono "strippat" con mysql_real_escape_string.
In uscita invece effettuo un semplice stripslashes().
Ma io in uscita non ho nessuno slash... ho solo apici
-
Ma ti sei accorto del meta che hai nella pagina??
<meta http-equiv=�Content-Type� content=�text/html; charset="UTF-8" />
-
Infatti ho specificato che IO nel mio caso uso lo strip in uscita, solo perchè in entrata aggiungo gli slash!
-
@Amistat said:
Ma ti sei accorto del meta che hai nella pagina??
<meta http-equiv=â??Content-Typeâ?? content=â??text/html; charset="UTF-8" />
Certo che me ne sono accorto
...e non vedo dove sia il problema.Tranquillo che quel META sta lì solo per farvi capire che leggo la pagina con UTF-8, tutto quà
...mica sta lì tanto per... eheh
-
Problema risolto con
echo "<option value=\"$citta[0]\">$citta[0]</option>";
C'era un pò di apici di troppo
-
@Protone86 said:
Certo che me ne sono accorto
...e non vedo dove sia il problema.Tranquillo che quel META sta lì solo per farvi capire che leggo la pagina con UTF-8, tutto quà
...mica sta lì tanto per... ehehSemplicemente era per farti notare i caratteri strani che avevi nel meta...
Bo vabbè alla fine hai risolto!
-
Ah ok, avevo capito male...
I caratteri strani erano dovuti al fatto che il file PHP che ho è salvato con la codifica UTF8...Grazie comunque, ciao