problema con l'inserimento di un record nel database (caratteri non consentiti)

asevenx

Utente Attivo
7 Nov 2009
312
0
16
ho creato un database e un form per l'iserimento dei record, tutto funziona alla perfezione, però quando voglio inserire un messaggio che comprende l'apostrofo mi appare questo errore:
string(38) "INSERT INTO commentibb VALUES ('',''')" You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '''')' at line 1

inoltre quando voglio inserire un messaggio con questi caratteri é è ç ò ° à § ù £ ì al loro posto appare questo carattere �
come posso risolvere?

grazie
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Per quanto riguarda l'apostrofo basta applicare la funzione addslashes al messaggio. Esempio:
PHP:
$messaggio = "Questo è un messaggio con l'apostrofo.";
$messaggio = addslashes($messaggio);

// ora inserisci i dati nella tabella
Per risolvere il problema degli accenti, invece, usa questa mia funzione:
PHP:
function my_htmlspecialchars($var)
{
	$search = array('è', 'é', 'ì', 'ù', 'ò', 'à');
	$replace = array('è', 'é', 'ì', 'ò', 'à');
	$var = str_replace($var, $search, $replace);
	
	return $var;
}
 

asevenx

Utente Attivo
7 Nov 2009
312
0
16
scusate se riapro questa discussione, volevo sapere se è possibile visualizzare l'apostrofo normalemente e non con lo slash al suo posto.

esempio se scrivo l'altro giorno mi visualizza l\'altro giorno

grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
si quando leggi il valore del campo usi la funzione inversa di adslashes cioè stripslashes.
es:

PHP:
echo stripslashes($mio_campo);
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
sicuro di aver utilizzato addslashes() per l'inserimento dei valori in tutti i campi?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
@vapiresco
non potrebbe essere che in phpini abbia attivato le quote magiche (o diaboliche)?
per cui usando add su es pin'pall diventa pin\\'pall?
logicamente usando stiptease() togli solo una slash
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Se ha utilizzato correttamente addslashes() è probabile che Borgo abbia ragione, darei una controllata alla direttiva Magic Quotes che tra l'altro è anche deprecata a partire da PHP 5.3.0
 

asevenx

Utente Attivo
7 Nov 2009
312
0
16
ciao, ho provato a togliere stripslashes ma visualizza sempre UNA slash per ogni apostrofo.

posto il codice collegato al form
PHP:
//dati database
$host = "xxx";
$username = "xxx";
$password = "xxx";
$database = "xxx";
$tabella = "xxxcommenti";

//dati form
$commento = isset($_POST['commento']) ? trim($_POST['commento']) : '';
$titolare = isset($_POST['titolare']) ? trim($_POST['titolare']) : '';

$commento = addslashes($commento);
$titolare = addslashes($titolare); 

//connessione e invio al DB
$connessione = mysql_connect($host, $username, $password) or die("Connessione DB fallita"); 
mysql_select_db($database, $connessione) or die("Selezione DB fallita");

//inserisci i dati del form
$comment = "INSERT INTO $tabella(idx,titolare,commento) VALUES('','$titolare','$commento')";  
mysql_query($comment) or die(mysql_error('Errore...')); 
$commentoins = "
    <table class=\"table\" cellspacing=\"0\" cellpadding=\"0\">
		<tr>
			<td align=\"center\">
				<font class=\"username\"><b>Grazie per aver commentato!</b><br>
				Il suo commento è stato aggiunto correttamente<br><br>
				<i>Verrai reindirizzato automaticamente alla pagina dei commenti</i>
				</font>
			</td>
	</table>
	"; 
echo stripslashes ($commentoins);
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
il codice è scritto giusto, però alla riga
echo stripslashes ($commentoins);
visto il contenuto di $commentoins lo stripslashes non ti serve (anche se puoi lasciarlo)
se metti semplicemente echo $commentoins;
vedrai che il risultato è lo stesso.
lo stipislashe ti serve quando andrai a recuperare i campi titolare e commento, lì dovrai mettere
es.
echo sripslashes($riga['titolare']);
e
echo sripslashes($riga['commento']);

avendoli inseriti con addslashes
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Problema inserimento parole con apostrofo nel db PHP 5
G inserimento csv in tabella mysql; problema con struttura PHP 11
M Problema con modulo registrazione e inserimento dati in database PHP 8
radioButton Problema inserimento stringa con apostrofo in database sql Database 21
B Problema inserimento dati con apostrofo MySQL 1
P Problema inserimento articolo con piu' tabelle PHP 1
M problema con l'inserimento di dati in un tag input PHP 3
A problema con l'inserimento di valori in una tabella dopo una ricerca da form Classic ASP 1
B Problema di inserimento "menu con css" in pagina web "con tabelle" HTML e CSS 5
J Problema con inserimento dati tabella PHP 4
G problema con inserimento dati PHP 4
S problema con inserimento nuovo record PHP 6
F Problema con il modulo inserimento record Classic ASP 1
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
N Problema con position absolute e overflow HTML e CSS 4
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
K [PHP] Problema con variabili concatenate. PHP 1
O problema con query PHP 4
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
M Problema con Try Catch PHP 0
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
G Problema con Get page PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 0
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
G Problema con eccessiva nitidezza apertura Camera Raw Photoshop 0

Discussioni simili