Inoltre manca anche un minimo controllo sui dati inseriti.
Per esempio, metti caso inserisci un apostrofo in un campo, la query darà errore perchè l'apostrofo è un carattere che il MySQL usa anche per separare i valori delle variabili.
Codice PHP:
$query = "INSERT INTO tabella (nome1, nome2) VALUES ('" . $_POST['valore1'] . "', '" . $_POST['valore2'] . "')";
Ponendo che da un form passi al campo di nome valore1 un valore come dell'amico nella query il PHP andrà a fare questo lavoro:
Codice PHP:
$query = "INSERT INTO tabella (nome1, nome2) VALUES ('dell'amico', '" . $_POST['valore2'] . "')";
Capirai anche da solo che quell'apostrofo sballa tutto perchè è come se chiudesse quel valore.
Per evitare questi problemi c'è una semplice funzione PHP che inserisce per questi caratteri speciali quello di escape: lo slash, che fa sì che quei caratteri vengano visti come normali caratteri e non vadino a modificare la query.
La funzione in questione è addslashes():
Codice PHP:
// ESEMPIO
$valore1 = addslashes($_POST['valore1']);
// Il valore ora non sarà più semplicemente dell'amico ma: dell\'amico
Questa è la protezione di base che serve ad evitare sia errori nella query sia le cosiddette SQL Injection.