[PHP] Problema con inserimento caratteri speciali

Ciao a tutti,

non so come risolvere un problema, sto facendo una pag in php nel mio sito per inserire in un db MySQL i tempi gara degli atleti, ex: 2'12"83, ma il fatto che inserisco gli apici singoli e doppi creano non pochi problemi al codice

$query = "insert into tb_gara values(NULL,'$nome','$cognome','$categoria','$sex','$gara',$vasca,$meeting,STR_TO_DATE('".$data."', '%d-%m-%Y'),'$tempo',$punti)";

mi restituisce questo errore

errorYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''12\"83,NULL)' at line 1

oltre al fatto di non usare gli apici, esiste un modo per risolvere questo problema???

grazie per l'aiuto

inviato 8 anni fa
federcla
X 0 X

Non sono un vero esperto di mysql, ma da quel che so la query è sbagliata, la query corretta dovrebbe essere in questa forma:

$query = "INSERT INTO Tabella ('Colonna1',Colonna2','Colonna3','Colonna4') VALUES ('Valore1','Valore2','Valore3','Valore4')";
risposto 8 anni fa
Hroud
X 0 X

Attenzione perché i nomi dei campi vanno specificati con il backtick ` (alt+096) e non con l'apice '.

Quindi se non si ha voglia di scrivere i nomi dei campi tra backticks meglio ometterli totalmente:

INSERT INTO tabella (id, campo1, campo2, campo3) VALUES (1, 'valore1', 'valore2', 'valore3);

Gli apici ai valori vanno solo se il valore che si sta inserendo una stringa, d'altronde non avrebbe senso qualcosa del genere

INSERT INTO tabella (campo1, campo2) VALUES (trashofmasters inserisce, un nuovo record nel database);

piuttosto sarebbe

INSERT INTO tabella (campo1, campo2) VALUES ('trashofmasters inserisce', 'un nuovo record nel database');

Però possiamo risparmiare di metterli per i campi numerici.

:bye:

risposto 8 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Ricordo che se in una stringa che si sta per inserire nel database si teme che possa contenere degli apici (ad esempio: "L'estate sta finendo", allora questa stringa deve essere passata prima alla funzione mysql_real_escape_string(), solo dopo può essere inserita nella query.

$stringa = "L'estate sta finendo";
$stringa = mysql_real_escape_string($stringa);

$query = "INSERT INTO tabella (campo1) VALUES ('$stringa');

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda